学习 Go 语言(Golang)读书笔记

go语言基本语法注意事项

  • rune类型,go语言独有,go字符本身采用unicode编码,rune相当于32int占用4个字节代表一个unicode字符。
  • […]int{1,2,3} 代表一个[3]int的数组,go语言的数组是固定长度的。[…]是通过数组初始化的值来计算数组长度。
  • []int{1,2,3} 代表一个 slice(切片) go中的切片是可变长的
  • go中的大些字母开头的函数,是可以对外声明可供外部访问

进阶章节

  • new与make关键字的区别。 new类似c++的new,可以创建一个类型的实力,并返回对象的指针。而make只针对slice,map,channel三种类型。
  • struct匿名字段,这个声明的时候有一点一定要注意,每个属性不要以逗号结尾,因为平时写json写习惯了,如果下面由,号结尾则会出意外问题
struct {
    T1  ← 字段名字是 T1
    *T2  ← 字段名字是 T2
    P.T3 ← 字段名字是 T3
    x,y int ←字段名字是x和y
}
  • 字符串转换成[]byte数组,格式比较特殊[]byte(s)
  • 自定义列举的例子其实文章并没有讲全,完全的例子可以看 https://go.dev/play/p/QCS1yvFabA
package main

import "fmt"

func main() {
	const (
		Enone  = 0
		Eio    = 2
		Einval = 5
	)

	a := [...]string{Enone: "no error", Eio: "Eio", Einval: "invalid argument"}
	s := []string{Enone: "no error", Eio: "Eio", Einval: "invalid argument"}
	m := map[int]string{Enone: "no error", Eio: "Eio", Einval: "invalid argument"}

	fmt.Println(a)
	fmt.Println(s)
	fmt.Println(m)
}

接口章节

  • go语言的接口就是方法的集合
  • 不管什么类型都可以转换成空接口interface{} 类似java语言的Object
  • switch对类型判断的特殊用法
func f(p I) {
    switch t:=p.(type) {
        case int: p.(int)
            ......
    }
}

并发章节

  • gorouting go语言的一种并发机制。不同于线程,gorouting占用率更低。 触发的形式是 go 函数()
  • channel 初始化方法 make(chan int) 代表这个channel可以接受int

遇到的问题

  • mac系统如果定义个组件提供其他的程序调用,其路径不要包含中文,如果包含中文会go install不成功,其他系统无此问题
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wp500

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值