go - lang 简介、安装、基础语法、流程控制、函数
发布时间:2020-12-16 09:28:02 所属栏目:大数据 来源:网络整理
导读:一 go 语言介绍 1 认识go? ?go语言(或 Golang)是Google在 2007 年开发的一种开源编程语言,于2009年11月开源,2012年发布go稳定版 ?go是非常年轻的一门语言,它的主要目标是“兼具Python 等动态语言的开发速度和C/C++等编译型语言的性能与安全性” 2 go 的
一 go 语言介绍1 认识go?
2 go 的诞生l? Robert:曾协助制作Java的HotSport编译器,制作了chrome浏览器的js引擎V8 l? Rob:google首席科学家,与ken共事多年,创出广泛实用的UTF-8编码 l? Ken:1966年加入贝尔实验室,1983年图灵奖和美国国家技术奖得主,是Unix的原创者,发明了衍生出C和B语言。 ? 3 go 的优势
4 使用go的公司? Google ? https://github.com/kubernetes/kubernetes ? Facebook ? https://github.com/facebookgo ? 腾讯 ? 百度 ? 360开源日志系统 ? https://github.com/Qihoo360/poseidon ? ?5 go适合做什么
? 二、环境安装1.????? 下载SDK
? 2.????? 安装和配置SDK
? 新增系统环境变量 ?
? 3? SDK目录介绍? 4? 安装开发工具? 安装,双击安装 ?? ? 破解文件替换---》 将.jar文件复制到工具安装的bin目录下 ? ? 用记事本打开“goland.exe.vmoptions”和“goland64.exe.vmoptions”这两个文件,在后面添加破解文件的路径 ? ? 打开开发工具 ? 找寻破解码,拷贝进去 ? ? ? 三 第一个GO 程序1 编写go源文件package main import "fmt" func main(){ fmt.Println("Go Lang,去浪吧,骚年!") } ? 结果为 ? 2? ?代码分析// go单行注释,与java和C++一样 /* 多行注释 */ //每个go源代码开头是package声明,表示所属的包 //main代表可编译成二进制文件 package main //导入格式化包,不用时会报错 import "fmt" //main()主函数入口,不能带参数,不能定义返回值 //func声明函数的关键字 //前边大括号不能单起一行 func main() { fmt.Println("Go Lang,去浪吧,骚年!") } ? ? 3 IDE 编写特点:自动导包,没有引用的包,会自动删掉。 ? 四? 基础语法1 命名
break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var
内建常量: true false iota nil 内建类型: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error 内建函数: make len cap new append copy close delete complex real imag panic recover ? ? 2 变量
?
?
?
??_代表特殊的变量名,作用是占位,不用于输出和打印 ? 3? ?常量与枚举
package main import "fmt" // const:声明常量 const filename = "abcd.txt" func consts() { const ( filename = "abc.txt" a,b = 3,4 ) //就近原则 fmt.Println(filename) } //定义枚举类 func enums() { const ( python = 0 golang = 1 java = 2 ) fmt.Println(python,golang,java) } //iota生成器 func enums2() { const ( python = iota golang java ) fmt.Println(python,java) } //iota参与运算 func enums3() { const ( // 1 << 0 // 1 * 2^0 b = 1 << (10 * iota) kb mb gb tb pb ) fmt.Println(b,kb,mb,gb,tb,pb) } func main() { enums3() } ? ? ?4 基本数据类型
?
?
?
?
?
? ? 5? ?fmt包的使用
?
? ? 6? 类型别名? 7? 类型转换
? 8? 运算符
? ?
? ?
? 五 流程控制1 选择结构
package main import ( "io/ioutil" "fmt" ) func main() { const filename = "abc.txt" //读文件 contents,err := ioutil.ReadFile(filename) if err != nil { fmt.Println(err) } else { fmt.Printf("%sn",contents) } // if也支持如下写法 if contents,err := ioutil.ReadFile(filename); err != nil { fmt.Println(err) } else { fmt.Printf("%sn",contents) } } ?
package main import "fmt" //传入成绩,返回评分等级 func grade(score int) string { // 定义字符串 g := "" // go语言switch自动每一句加了break switch { case score < 0 || score > 100: g = "输入错误" case score < 60: g = "F" fallthrough case score < 80: g = "C" case score < 90: g = "B" case score <= 100: g = "A" } default: XXX return g } //F F C B A A 输入错误 func main() { fmt.Println( grade(0),grade(59),grade(60),grade(82),grade(99),grade(100),grade(-3),) } ? ? ? 2 循环结构
package main import ( "fmt" "time" ) // 死循环 func for1() { //写法简单 for { fmt.Println("日耳曼战车凉凉") // 睡1秒 time.Sleep(1 * time.Second) } } //有次数的循环 func for2() { for i := 1; i < 11; i++ { fmt.Println("日耳曼战车凉凉",i) //睡500毫秒 time.Sleep(500 * time.Millisecond) } } //有次数的循环 func for3() { for i := 1; i < 11; i++ { if i%5 == 0 { fmt.Println("爱阿根廷") } else if i%2 == 1 { fmt.Println("更爱战车") } else { fmt.Println("更爱是天台") } time.Sleep(500 * time.Millisecond) } } func main() { for3() } ? ?
package main import "fmt" func main() { s := "abc" //接收下标,通过下标取值 for i := range s { fmt.Printf("下标=%d,值=%cn",i,s[i]) } //直接都接收到 for i,c := range s { fmt.Printf("下标=%d,值=%cn",c) } for _,c := range s { fmt.Printf("值=%cn",c) } } ? ? 3 调转语句
?
跳转到标识符语句位置。 跳转后不会返回到原语句。 ? 六 函数1 自定义函数
func 函数名( [参数列表] ) [返回值列表] {
函数体
}
?
?
?
? ?
?
?
package main import "fmt" // 循环实现1到100累加 func Test01() int { sum := 0 for i := 1; i <= 100; i++ { sum += i } return sum } //递归实现 //传100 func Test02(num int) int { if num == 1 { return 1 } return num + Test02(num-1) } func main() { fmt.Println(Test01()) fmt.Println(Test02(100)) } ? ? 2? ?defer关键字
? 3 多个defer 执行顺序(栈)package main import "fmt" func test(x int) { fmt.Println(100 / x) } func main() { //defer是延迟操作 defer fmt.Println("aaaa") defer fmt.Println("bbbb") //报错并不影响程序运行 defer test(0) defer fmt.Println("cccc") } ? ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |