Golang编程语言知识介绍


  • 首页

  • todo

  • 思考

  • life

  • food

  • OS

  • lua

  • redis

  • Golang

  • C

  • TCP/IP

  • ebpf

  • p4

  • OpenVPN

  • IPSec

  • L2TP

  • DNS

  • distributed

  • web

  • OpenWRT

  • 运维

  • Git

  • 鸟哥的私房菜

  • IT杂谈

  • 投资

  • About Me

  • 友情链接

  • FTP

  • 搜索
close

Golang知识小结

时间: 2021-08-10   |   分类: go     |   阅读: 706 字 ~2分钟

string

  • string类型采用UTF-8编码,且不可修的,len返回byte数量而不是字符数量,eg(len(你好)==6

数组和slice

  • 数组在函数调用的参数传递模式是独立复制一份数据给被调用函数
  • slice以及map,chan对应的的函数传参知识参考这里Golang函数参数传递

map

  • 初始化: h := map[int]string{} 显示构造,或者 h = make(map[int]string),
  • 空值 h := map[int]string 将构造一个nil的map,可以调用range, len, 读,但不能写值
  • map是指针数据结构,即当作函数参数传递时,函数内部修改了其值,会影响函数外部原始的map
  • var = map[k],若对应的k不存在,则返回零值,故而要判断时候存在,需引入第二个参数eg: val, exist := map[k]
  • 不可对map中的元素取地址eg:&tbl[k]是非法的(map的大小可能随时调整故取地址无意义)。
  • 可以采用range风格对其轮询,顺序是随机的(设计如此)。如果需要按照一定的规则读取map,一个办法是先把key排好序,再用map[key]的的方法读写

struct

  • 导出规则与模块一样
  • 一般而言一行定义一个成员
  • 不能递归定义自己,但可以在内部使用自己类型的指针
  • 其零值是每个成员的零值,如果内部有(map,chan),还需要在struct{}构造后,显式的对其初始化
type  sh struct {
	m map[int]int
}
var st = sh{}
st.m = make(map[int]int)

function

  • 参数是传值模式,没有默认值,数量可以是可变模式
  • 可以递归调用自己
  • 函数名是第一类值,可以和nil比较,但不能作为map的key
  • 支持闭包(closures),这点和lua中的函数一致,与之对应,C语言不支持闭包

方法

变量类型

  • 七个小矮人(slice,map,func,channel,pointer, string, interface),自带魔法绳(指针), 所以没必要将它定义成引用类型
#go#
redis基础数据结构-zipmap简介
redis基础数据结构-dict简介
shankusu2017@gmail.com

shankusu2017@gmail.com

日志
分类
标签
GitHub
© 2009 - 2025
粤ICP备2021068940号-1 粤公网安备44011302003059
0%