我是靠谱客的博主 高贵过客,最近开发中收集的这篇文章主要介绍Golang学习笔记2——类型与变量,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.基本类型

类型长度默认值说明
bool1false不能使用0、1代替false、true
byte10等同于uint8
int、uint4、80默认整数类型,根据平台,32或64位
int8、uint810-128 ~ 127,0 ~ 255
int16、uint1620-32768 ~ 32767,0 ~ 65535
int32、uint3240-(2^32 / 2) ~ (2^32 / 2 - 1),0 ~ 2^32
int64、uint6480-(2^64 / 2) ~ (2^64 / 2 - 1),0 ~ 2^64
float3240.0
float6480.0默认浮点数类型
complex648
complex12816
rune40Unicode Code Point, int32
uintptr4,80足以存储指针的uint
string""字符串,默认值为空字符串,而非NULL
array数组
struct结构体
functionnil函数
interfacenil接口
mapnil字典,引用类型
slicenil切片,引用类型
channelnil通道,引用类型

2.类型别名

设置类型别名后可以让代码可读性更强,一目了然这个变量做什么用的:

type (
ByteSize int64
)

3.变量的声明与赋值

  • 变量的声明: var a int
  • 变量的赋值:a = 123
  • 声明并赋值: var a int = 123 (此时若省略类型,则编译器根据值自动推导类型)
  • 多个变量的声明

并行方式(可以省略类型,由值推导)

var a, b, c, int = 1, 2, 3

函数内部声明变量的简写形式:

funciont main(){
a:= 1
}

函数多个返回值时可以用"_"忽略返回值

 a, _, c, d := 1, 3, 4

4.类型转换

  • go中不存在隐式转换,所有类型转换必须显示声明
  • 转换只能发生在两种相互兼容的类型之间
  • 类型转换的格式:
var a float32 = 1.1
b := int(a)
  • 语法歧义

如果转换的目标是指针、单向通道或没有返回值的函数类型,那么必须使用括号,以避免造成语法分解错误。

fun main() {
x := 100
p := *int(&x)
//错误:cannot convert &x (type *int) to type int
//
invalid indirect of int(&x) (type int)
fmt.Println(p)
}

正确的做法是用括号,让编译器将*int解析未指针类型。

(*int)(p)
(<-chan int)(c)
(func())(x)

转载于:https://www.cnblogs.com/marks-gui/p/7707920.html

最后

以上就是高贵过客为你收集整理的Golang学习笔记2——类型与变量的全部内容,希望文章能够帮你解决Golang学习笔记2——类型与变量所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部