其他分享
首页 > 其他分享> > Go常见

Go常见

作者:互联网

GO基础语法

  1. 方法或函数调用时,传入参数一般都是值复制,除非是map、slice、channel、指针类型是引用传递

  2. 短的变量声明(Short Variable Declarations),即自动推导,只能在函数内部使用

  3. 字符串与[]byte之间的转换是复制(有内存消耗),使用range来避免内存分配来提高性能

  4. 使用for range迭代map时每次迭代的顺序可能不一样,map的迭代事随机的

  5. switch case匹配case条件后默认退出,除非使用fallthrough继续匹配

  6. 没有前置自增、前置自减

  7. 位运算优先级高于四则运算

  8. log包中的log.Fatallog.Panic不仅仅记录在日志,还会终止程序

  9. nil只能赋值给指针、channel、func、interface、map或slice类型的变量

  10. makenew的区别

    1. make只能用于slice、map、channel的初始化,它返回的类型就是这三个类型的本身,而不是他们的指针类型,因为这三种类型就是引用类型。分配空间并初始化。

      // The make built-in function allocates and initializes an object of type
      // slice, map, or chan (only). Like new, the first argument is a type, not a
      // value. Unlike new, make's return type is the same as the type of its
      // argument, not a pointer to it. The specification of the result depends on
      // the type:
      //	Slice: The size specifies the length. The capacity of the slice is
      //	equal to its length. A second integer argument may be provided to
      //	specify a different capacity; it must be no smaller than the
      //	length. For example, make([]int, 0, 10) allocates an underlying array
      //	of size 10 and returns a slice of length 0 and capacity 10 that is
      //	backed by this underlying array.
      //	Map: An empty map is allocated with enough space to hold the
      //	specified number of elements. The size may be omitted, in which case
      //	a small starting size is allocated.
      //	Channel: The channel's buffer is initialized with the specified
      //	buffer capacity. If zero, or the size is omitted, the channel is
      //	unbuffered.
      func make(t Type, size ...IntegerType) Type
      
    2. new只接受一个参数,这个参数是一个类型,返回一个指向该类型内存地址的指针,同时把分配的内存置为零。new不仅能够为系统默认的数据类型分配空间,也能为自定义类型分配空间

      // The new built-in function allocates memory. The first argument is a type,
      // not a value, and the value returned is a pointer to a newly
      // allocated zero value of that type.
      func new(Type) *Type
      
  11. 常量无法寻址,不能进行取指针操作操作

标签:map,slice,make,常见,Go,new,type,size
来源: https://www.cnblogs.com/lxuegod/p/16635808.html