在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一 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, golang, 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("%s\n", contents) } // if也支持如下写法 if contents, err := ioutil.ReadFile(filename); err != nil { fmt.Println(err) } else { fmt.Printf("%s\n", 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,值=%c\n", i, s[i]) } //直接都接收到 for i, c := range s { fmt.Printf("下标=%d,值=%c\n", i, c) } for _, c := range s { fmt.Printf("值=%c\n", 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") }
|
请发表评论