Go基础
houyanhua1
这个作者很懒,什么都没留下…
展开
-
Go 文件拷贝
demo.go(文件拷贝):package mainimport ( "fmt" "io" "os")func main() { // 打开文件 fp1, err1 := os.OpenFile("./demo.txt", os.O_RDONLY, 6) fp2, err2 := os.Create("./demo2.txt") if err1 != nil |...原创 2019-03-23 16:20:41 · 450 阅读 · 0 评论 -
Go 切片的截取 (并不会拷贝,只是一种视图窗口)
demo.go(切片的截取(不拷贝,只是一种视图窗口),修改截取后的切片也会影响到原切片):package mainimport "fmt"func main() { // 定义切片。 slice := []int{0,1,2,3,4,5,6,7,8,9} // 切片的截取 [起始下标:结束下标] s := slice[3:6] // 包含下标3,不包含下标6 f...原创 2019-03-18 19:56:07 · 1013 阅读 · 0 评论 -
Go 切片类型,定义切片。切片的地址,切片的容量
demo.go(切片类型):package mainimport "fmt"func main() { // 定义切片 (数组长度固定,切片的长度可以不固定) var slice = []int{1,2,3,4,10:5} // 10表示下标 slice[1] = 100 fmt.Println(slice) // [1 100 3 4 0 0 0 0 0 0 5...原创 2019-03-18 18:03:35 · 2926 阅读 · 0 评论 -
Go 数组,定义数组,遍历数组。二维数组
demo.go(定义数组,遍历数组):package mainimport "fmt"func main() { // 定义数组 (数组的长度必须是一个常量或常量表达式) var arr [5]int // 元素初始值都是0(int) arr[0] = 111 arr[1] = 222 fmt.Println(arr) // [111 222 0 0 0] 数组...原创 2019-03-18 15:36:25 · 3691 阅读 · 0 评论 -
Go 多文件编程,包
src/main.go(主函数所在的文件):package main // 主函数必须在main包中// 多文件编程,可以通过命令行进行编译: go build main.go myfunc.go (将多个文件当成一个整体进行编译)// go build ./src (多文件编程,将指定目录下的所有文件整体进行编译)func main() { // 调用当前包(目录)...原创 2019-03-18 12:50:35 · 8172 阅读 · 1 评论 -
Go 匿名函数
demo.go(匿名函数):package mainimport "fmt"func main() { a := 10 b := 20 // 定义匿名函数 并调用 func(a int, b int) { fmt.Println(a, b) }(a, b) // 小括号表示调用 // func类型的变量 var f func(int, int) // 将...原创 2019-03-18 10:16:26 · 120 阅读 · 0 评论 -
Go 类型断言
demo.go(类型断言):package mainimport "fmt"func main() { // 定义空接口类型变量 (可以接收任意类型的数据) var i interface{} i = 10 // 存放int类型数据 // int(i) + 20 // 会报错。 接口不能直接参与运算(类型转换),需要使用类型断言。 // 类型断言 value...原创 2019-03-21 15:03:18 · 196 阅读 · 0 评论 -
Go func()类型,函数类型
go语言中的type关键字的用处:1、定义func类型。 2、定义结构体类型。 3、为类型取别名。demo.go(函数类型):package mainimport "fmt"// type 为func函数类型取别名type MYFUNC func(int, int)// 主函数func main() { var f MYFUNC f = addFunc f...原创 2019-03-17 22:06:52 · 13397 阅读 · 1 评论 -
Go 空接口类型,存储任意类型数据
demo.go(空接口,存储任意类型数据):package mainimport "fmt"func main() { // 定义空接口类型变量 (可以接收任意类型的数据。相当于所有类型都实现了空接口) var i interface{} fmt.Printf("%T\n", i) // <nil> i = 10 // int fmt.Printl...原创 2019-03-21 12:40:02 · 2510 阅读 · 0 评论 -
Go 不定参函数
demo.go(不定参函数):package mainimport "fmt"// 主函数func main() { // 调用函数 add(1, 2, 3)}// 定义函数 ...表示不定参func add(args ...int) { // args是数据的集合(切片,类似数组)(数组的长度是固定的) fmt.Println(args) ...原创 2019-03-17 21:25:13 · 143 阅读 · 0 评论 -
Go 定义函数
demo.go(定义函数):package mainimport "fmt"// 主函数func main() { a := 10 b := 20 // 调用函数 add(a, b)}// 定义函数(没有返回值)func add(a int, b int) { sum := a + b fmt.Println(sum)}demo.go(定义有返回...原创 2019-03-17 21:22:19 · 536 阅读 · 0 评论 -
Go error接口类型
error接口类型是go语言自带的类型。demo.go(error接口类型):package mainimport ( "errors" "fmt")// 除法函数func dive(a int, b int) (val int, err error) { // error类型是go自带的接口类型 if b == 0 { // 手动处理(捕获)异常 err...原创 2019-03-22 10:17:19 · 212 阅读 · 0 评论 -
Go 延迟调用 defer
demo.go(延迟调用,defer):package mainimport "fmt"func main() { fmt.Println("1") defer fmt.Println("2") // defer延迟调用 (所在函数运行结束前,最后执行该代码行) defer fmt.Println("3") fmt.Println("4") fmt.Println(...原创 2019-03-22 11:09:05 · 154 阅读 · 0 评论 -
Go 读取文件,块读取 Read(),行读取 ReadBytes('\n')
demo.go(读取文件,块读取 Read()):package mainimport ( "fmt" "io" "os")func main() { // 打开文件 fp, err := os.Open("./demo.txt") // os.Open() 只读方式打开 if err != nil { fmt.Println("打开文件失败。", err)...原创 2019-03-23 15:08:55 · 9840 阅读 · 0 评论 -
Go 打开文件,写入文件。
demo.go(打开文件,写入文件):package mainimport ( "fmt" "io" "os")func main() { // 打开文件 // fp, err := os.Open("./demo.txt") // 只读方式打开 fp, err := os.OpenFile("./demo.txt", os.O_CREATE|os.O_APPE...原创 2019-03-22 18:35:37 · 7180 阅读 · 0 评论 -
Go 字符切片中添加其他类型元素,strconv.AppendXXX()
字符切片中添加其他类型元素:其他类型数据先转换成string类型-->string类型再转换成byte字符类型-->再添加到[]byte字符切片中。demo.go(其他类型添加到字符切片中,strconv.AppendXXX()):package mainimport ( "fmt" "strconv")func main() { // 将其他类型添加到...原创 2019-03-19 13:02:50 · 1116 阅读 · 0 评论 -
Go 字符串类型转换。strconv.FormatXXX(),strconv.ParseXXX()
demo.go(其他类型转成字符串类型,strconv.FormatXXX()):package mainimport ( "fmt" "strconv")func main() { // 字符串转换成字符切片 slice := []byte("hello") // 强制类型转换 string-->[]byte fmt.Println(slice) // ...原创 2019-03-19 11:33:39 · 3054 阅读 · 0 评论 -
Go 字符串常用函数。Contains()、Join()、Index()、Repeat()、Replace()、Split()、Trim()、Fields()
demo.go(字符串常用函数):package mainimport ( "fmt" "strings")func main() { // Contains() 字符串是否包含 b := strings.Contains("hello world","llo") fmt.Println(b) // true // Join() 将字符串切片进行拼接 sli...原创 2019-03-19 10:01:46 · 2016 阅读 · 0 评论 -
Go 创建文件,os.Create()
demo.go(创建文件,os.Create()):package mainimport ( "fmt" "os")func main() { // 创建文件 fp, err := os.Create("./demo.txt") // 如果文件已存在,会将文件清空。 fmt.Println(fp, err) // &{0xc000076780} <...原创 2019-03-22 14:06:30 · 22108 阅读 · 0 评论 -
Go 随机数
demo.go(随机数):package mainimport ( "fmt" "math/rand" "time")func main() { // 创建随机数种子 (默认将1970-1-1 00:00:00当做随机数种子) rand.Seed(time.Now().UnixNano()) // UnixNano()表示纳秒 a:= rand.Intn(10...原创 2019-03-18 21:10:19 · 2400 阅读 · 0 评论 -
Go 数组、切片作为函数的参数。值传递、引用传递
demo.go(切片、数组作为函数的形参):package mainimport "fmt"// 值传递:改变形参的值,并不会改变实参的值。(例如:数组、结构体)// 地址传递(引用传递):改变形参的值,会影响到实参的值。(例如:切片、map、指针)(切片变量名本身就是一个地址)// 数组作为函数的参数,是值传递。 修改形参不会改变实参的值。(可以通过返回值来覆盖(修改)...原创 2019-03-18 21:07:38 · 5199 阅读 · 0 评论 -
Go 切片的拷贝 copy()
demo.go(切片的拷贝,copy()):package mainimport "fmt"func main() { // 定义切片。 slice := []int{0, 1, 2, 3, 4} s := make([]int, 5) // 切片的拷贝 copy(s, slice) // 拷贝 fmt.Println(s) // [0 1 2 3 4] fm...原创 2019-03-18 20:14:33 · 1202 阅读 · 0 评论 -
Go panic异常,recover()拦截异常(捕获异常)
demo.go(panic异常):package mainimport "fmt"func main() { fmt.Println("11111") panic("异常信息") // 手动抛出panic异常(运行时异常) fmt.Println("22222") // 异常之后的代码不会执行}demo.go(recover()拦截异常,捕获异常):p...原创 2019-03-22 12:39:10 · 4049 阅读 · 0 评论 -
Go 接口,接口继承
demo.go(接口继承):package mainimport "fmt"// 父接口type Humen interface { SayHello()}// 子接口type Person interface { Humen // 继承父接口 sing(string)}// 学生类type Student struct { name string...原创 2019-03-21 12:04:51 · 5167 阅读 · 0 评论 -
Go 接口,interface,多态
demo.go(接口,多态):package mainimport "fmt"// 定义接口 (规则、协议)type Humen interface { // 方法 (规则) SayHello() //SayHello(int, int) int // 可以有参数和返回值}// 学生类type Student struct { name string ag...原创 2019-03-21 10:46:07 · 301 阅读 · 0 评论 -
Go bool类型、byte类型、string类型
demo.go:package mainimport "fmt"func main(){ // 定义bool类型的变量。 默认false var a bool fmt.Println(a) // false fmt.Printf("%t \n", a) // false 占位符%t表示bool类型 // %T占位符,表示变量的类型 fmt.Printf("%...原创 2019-03-16 14:38:16 · 1156 阅读 · 0 评论 -
Go 数组指针(指向数组的指针)
demo.go(数组指针):package mainimport "fmt"func main() { a := [5]int{1, 2, 3, 4, 5} p := &a // p数组指针(指向数组的指针) fmt.Println(*p) // [1 2 3 4 5] fmt.Println((*p)[0]) // 1 *p[0]的写法是错误的,...原创 2019-03-20 12:23:29 · 3489 阅读 · 0 评论 -
Go 指针作为函数参数
demo.go(指针作为函数参数):package mainimport "fmt"func main() { a := 100 b := 200 // 调用函数 swap(&a, &b) fmt.Println(a) // 200 fmt.Println(b) // 100}// 指针变量作为函数参数 (地址传递,引用传递)func ...原创 2019-03-20 11:29:54 · 966 阅读 · 0 评论 -
Go 指针变量,内存模型
demo.go(定义指针变量):package mainimport "fmt"func main() { a := 100 // int类型 fmt.Printf("%p \n", &a) // 0xc00004c080 // 定义指针变量 var p *int = &a fmt.Printf("%p \n", p) // 0xc00004c...原创 2019-03-20 10:27:00 · 407 阅读 · 0 评论 -
Go 格式化输出 Printf(),键盘输入 Scan()
demo.go(格式化输出,Printf):package mainimport "fmt"func main(){ fmt.Print("你好") // 不换行 fmt.Println("哈哈") // 有换行 // Printf 格式化输出。 \n表示换行 fmt.Printf("%d %.2f %s \n", 20, 15.5555, "hello") ...原创 2019-03-15 15:55:08 · 603 阅读 · 0 评论 -
Go 多重赋值,匿名变量 _
demo.go(多重赋值):package mainimport "fmt"func main(){ // 多重赋值。 变量的个数和赋值的个数必须相同。 a, b, c := 10, 11, "哈哈" fmt.Println(a) // 10 fmt.Println(b) // 11 fmt.Println(c) // 哈哈 // :=多重赋值中可以出现之...原创 2019-03-15 14:31:31 · 710 阅读 · 0 评论 -
Go 变量的定义、使用,自动推导类型 :=
demo.go(变量的定义、声明):package mainimport ( "fmt" "math")func main(){ // 变量的定义 // var 变量名 类型 = 值 var num1 int = 50 num1 += 25 fmt.Println(num1) // 75 // 变量的声明(未赋值)。 var num2 int fmt....原创 2019-03-15 12:35:36 · 879 阅读 · 0 评论 -
Go 入门程序
demo.go(第一个go程序):package main // 主函数所在的包必须是mainimport "fmt"// main() 主函数,程序中有且只能有一个主函数。func main(){ fmt.Println("hello world") fmt.Print("哈哈") // 打印,但不换行}...原创 2019-03-15 12:16:42 · 137 阅读 · 0 评论 -
Go 结构体,定义结构体类型,struct
demo.go(定义结构体类型):package mainimport "fmt"// 定义结构体类型 (在函数外部定义(全局的),可以在整个项目中使用)type student struct { id int // 结构体的成员 name string age int}func main() { // 定义结构体变量 (结构体是一种复合类型) va...原创 2019-03-19 17:34:15 · 3072 阅读 · 0 评论 -
Go map作为函数参数 (引用传递,修改形参会影响到实参)
demo.go(map作为函数参数,引用传递):package mainimport "fmt"func main() { // 定义map map1 := map[int]string{1: "张三", 2: "李四", 3: "王五"} fmt.Println(map1) // map[1:张三 2:李四 3:王五] fmt.Printf("%p \n", map...原创 2019-03-19 15:52:46 · 11083 阅读 · 0 评论 -
Go 继承,结构体实现继承
demo.go(结构体的匿名字段实现继承):package mainimport "fmt"// 定义结构体类型 (父类)type Person struct { id int name string age int}// 定义结构体类型 (子类)type Student struct { Person // 匿名字段实现继承 (结构体嵌套结构体) /...原创 2019-03-20 16:54:06 · 10867 阅读 · 0 评论 -
Go 八进制、十六进制
demo.go:package mainimport "fmt"func main(){ // 十进制 var a int = 10 fmt.Printf("%d \n", a) // 10 fmt.Printf("%b \n", a) // 1010 占位符%b表示二进制 // 八进制 以0开头 var b int = 077 fmt.Printf("...原创 2019-03-16 14:56:17 · 6962 阅读 · 0 评论 -
Go goto跳转
demo.go(goto关键字):package mainimport "fmt"func main() { // goto关键字 (可以从一个循环跳到另一个循环,可以从一个函数跳到另一个函数) fmt.Println(1) fmt.Println(2) goto MYFLAG fmt.Println(3) fmt.Println(4) MYFLAG: fmt...原创 2019-03-17 15:08:43 · 590 阅读 · 1 评论 -
Go time时间模块
demo.go(time模块):package mainimport ( "fmt" "time")func main() { // time time.Sleep(time.Second * 5) // 休眠5秒。 fmt.Println(time.Now()) // 2019-03-17 14:17:39.9639144 +0800 CST m=+5.0...原创 2019-03-17 14:22:02 · 358 阅读 · 0 评论 -
Go for 循环
demo.go(for 循环):package mainimport ( "fmt" "time")func main() { // for循环 for i := 0; i < 5; i++ { fmt.Println(i) time.Sleep(time.Second) // 暂停等待。 每5秒循环一次。 } // for循环 (第二种方式...原创 2019-03-17 14:15:46 · 343 阅读 · 0 评论