栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习 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不成功,其他系统无此问题
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/935075.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号