Loading... # 上一期学习进度 demo1() // 九九乘法表,基本输出 demo2() // 简单计算器,键盘输入和基本输出 demo3() // 递归法阶乘,主要观察形参和返回值 demo4() // 字符串操作,字符串相关操作 demo5() // 自定义类型(结构体)map键值对的使用 demo6() // 指针简单实例,指针的操作 demo7() // 变量交换,形参的传递,地址相关 详细参见文章: <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://www.zunmx.top/archives/1348/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://www.zunmx.top/usr/themes/handsome/assets/img/sj/1.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">Go学习 Day-01</p> <div class="inster-summary text-muted"> 引言最近刷抖音听说Go语言是不推荐小白学习的,自认为能力还算可以,想要挑战一下,大概的了解了一下基本语法,感觉和C... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> # 今天的大纲 demo1() // 读文件 demo2() // 写文件 demo3() // 数组操作 demo4() // 基本运算符 demo5() // 循环结构,goto语句 demo6() // 可变长度数组--切片 # 代码 ```go package main import ( "bufio" "fmt" "log" "os" "time" ) func demo1Func1() { // 全部都加载到内存 data, err := os.ReadFile("golang/day02/day02.go") if err != nil { log.Fatal(err) } os.Stdout.Write(data) } func demo1Func2() { // 逐行读文本 file, err := os.Open("golang/day02/day02.go") if err != nil { log.Fatal(err) } scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) } } func demo1() { demo1Func1() // 全部都加载到内存 demo1Func2() // 逐行读文本 } func demo2Fun1() { text := "1234567890abcdefgABCDEFG\n你好,世界" //OpenFile(path, type, permissions) 也就是读、写、只读那些,权限就是421的那个ReadWriteX(execute) open, err := os.OpenFile("golang/day02/day02.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666) if err != nil { log.Fatal(err) } _, err = open.Write([]byte(text)) if err != nil { return } } func demo2Fun2() { text := "你好,世界\n1234567890abcdefgABCDEFG" file, err := os.OpenFile("golang/day02/day02_1.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666) if err != nil { log.Fatal(err) } w := bufio.NewWriter(file) w.WriteString(text) w.Flush() } func demo2() { start_f1 := time.Now() demo2Fun1() // 直接写文件 start_f2 := time.Now() demo2Fun2() // 通过bufio模块写文件 start_f3 := time.Now() fmt.Println("文件写入效率对比:\n" + "\t方法1:" + start_f2.Sub(start_f1).String() + "\n" + "\t方法2:" + start_f3.Sub(start_f2).String()) /* 文件写入效率对比: 方法1:1.0488ms 方法2:505.3µs */ } func demo3() { var array [9][9]int // 9 是数组的长度,这么说,这样定义也就是二维数组 for i := 0; i < 9; i++ { for j := 0; j < 9; j++ { array[i][j] = (i + 1) * (j + 1) } } for i := 0; i < 9; i++ { fmt.Println(array[i]) } var array2 = [9]int{1, 4, 7} fmt.Println(array2) // 没有初始化的默认值为0 var array3 = [...]int{1, 2, 3, 4} //array3[4] = 4 // [...]是让编译器自己往里面写数,实际上长度为4,从0开始,第四个也就越界了。 fmt.Println(array3) const size = 8 // 常量定义 var arr [size]int arr[0] = 1 arr[1] = 1 for i := 2; i < size; i++ { arr[i] = arr[i-2] + arr[i-1] } fmt.Println(arr) } func demo4() { fmt.Println("1+1=", 1+1) fmt.Println("1-1=", 1-1) fmt.Println("2*3=", 2*3) fmt.Println("4/2=", 4/2) fmt.Println("4/3=", 4/3) fmt.Printf("4/3.0==%.2f\n", 4/3.0) // 保留两位小数 fmt.Printf("4%%3==%d\n", 4%3) // 保留两位小数 a := 1 a++ fmt.Println("a>1?", a > 1) fmt.Println("2<<3", 2<<3) // 2 * 2^3 fmt.Println("8>>2", 8>>2) // 8 / 2^2 //--a // 不支持先行运算 } func demo5() { for i := 0; i < 9; i++ { if i == 5 { break } fmt.Println(i) } flag := 0 label: { flag++ println("goto label") } for i := 0; i < 9; i++ { fmt.Println(">>", flag, i) if i == 5 && flag < 5 { goto label } } // for 和 while 使用了同一个关键字哈 for true { // 死循环 second := time.Now().Second() if second%2 == 0 { fmt.Println("当前秒数为奇数,跳出循环") break } else { fmt.Println("当前秒数为偶数,死循环") } } } func demo6() { var s = make([]int, 0) s = append(s, 2) s = append(s, 4) s = append(s, 6) s = append(s, 8) s = append(s, 10) fmt.Println(s) fmt.Println(s[2]) var st = make([]int, 0) st = append(s[:2], s[3:]...) // 删除元素就有点麻烦了,不知道有没有工具类,直接操作的 fmt.Println(st) } func main() { demo1() // 读文件 demo2() // 写文件 demo3() // 数组操作 demo4() // 基本运算符 demo5() // 循环结构,goto语句 demo6() // 可变长度数组--切片 } ``` # 疑问&解答 nil # 记录 nil © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏