Go语言之旅:基本类型
原文地址:https://learn-linux.readthedocs.io
欢迎关注我们的公众号:小菜学编程 (coding-fan)
Go 内置了以下基本类型:
布尔
- bool
字符串
- string
整数
- int int8 int16 int32 int64
- uint uint8 uint16 uint32 uint64
字节
- byte , uint8 的别名
Unicode
- rune , int32 别名
浮点
- float32 float64
复数
- complex64 complex128
package main
import (
"fmt"
"math/cmplx"
)
var (
ToBe bool = false
MaxInt uint64 = 1 << 64 -1
z complex128 = cmplx.Sqrt(-5 +12i)
)
func main() {
fmt.Printf("Type: %T Value: %v\n", ToBe, ToBe)
fmt.Printf("Type: %T Value: %v\n", MaxInt, MaxInt)
fmt.Printf("Type: %T Value: %v\n", z, z)
}
例子展示了几种不同类型变量的用法。 注意到,跟 import语句 一样,变量申明可以批量写到一个代码块里。
一般来说,int 、 uint 以及 uintptr 类型在 32 位机器上是 32 位长; 在 64 位机器上则是 64 位长。 需要使用整数时, int 类型是首选, 除非你有特别的理由一定要用 定长 或者 无符号 类型。
零值
变量申明时没有显式赋初始值,则默认是“ 零 ”。
不同的类型有不同的“ 零 ”:
- 对于数值类型是
0; - 对于布尔类型是
false; - 对于字符串类型是
""(空字符串);
package main
import "fmt"
func main() {
var i int
var f float64
var b bool
var s string
fmt.Printf("%v %v %v %q\n", i, f, b, s)
}
类型转换
表达式 ( expression ) T(v) 将值 v 转换成类型 T , 这就是所谓的 类型转换 ( type conversions )。
这是一些数值类型转换:
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
或者简写成:
i := 42
f := float(i)
u := uint(f)
跟 C 语言有所不同, Go 在不同类型之间赋值,需要显式类型转换。 不信,将下面例子中 float64 和 unit 类型转换移除,看看发生什么?
package main
import (
"fmt"
"math"
)
func main() {
var x, y int = 3, 4
var f float64 = math.Sqrt(float64(x*x + y*y))
var z uint = uint(f)
fmt.Println(x, y, z)
}
类型推理
变量类型通过右边的值推理而来。
如果申明右边的值是有类型的,那么新变量也是一样的类型:
var i int
j := i // j is an int as well
如果右边只是一个数值常量,没有具体类型,那么新变量可能是 int 、 float64 以及 complex128 三种类型中的一种,取决于常量的精度。
i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128
接下来做个实验吧! 改变例子中 v 的初始值,观察它是如何影响变量类型的:
package main
import "fmt"
func main() {
v := 42 // change me!
fmt.Printf("v is of type %T\n", v)
}
下一步
订阅更新,获取更多学习资料,请关注我们的 微信公众号 :


Go语言之旅:基本类型的更多相关文章
- GO语言总结(2)——基本类型
上篇博文总结了Go语言的基础知识——GO语言总结(1)——基本知识 ,本篇博文介绍Go语言的基本类型. 一.整型 go语言有13种整形,其中有2种只是名字不同,实质是一样的,所以,实质上go语言有1 ...
- C语言基础(6)-char类型
1. char常量.变量 使用单引号‘’引起来的就是char的常量 ‘a’是一个char类型的常量 “a”是一个字符串类型的常量 1是一个int型的常量 ‘1’是一个char型的常量 char a; ...
- C语言小结之结构类型
C语言小结之结构类型 @刁钻的游戏 (1)枚举型类型enum COLOR {BLACK,RED,BLUE};//声明一种新的数据类型,其值分别为0,1,2但是用BLACK/RED/BLUE代表也可以这 ...
- 【C语言学习】存储类型
C语言中的存储类型主要有四种:auto.static.extern.register ★auto存储类型 默认的存储类型.在C语言中,假设忽略了变量的存储类型,那么编译器就会自己主动默认为auto型 ...
- Go语言规格说明书 之 类型(Types)
go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,完整的介绍Go语 ...
- C语言学习之枚举类型
前言 枚举(enum)类型是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把 ...
- 《Go语言实战》Go 类型:基本类型、引用类型、结构类型、自定义类型
Go 语言是一种静态类型的编程语言,所以在编译器进行编译的时候,就要知道每个值的类型,这样编译器就知道要为这个值分配多少内存,并且知道这段分配的内存表示什么. 提前知道值的类型的好处有很多,比如编译器 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型 1.返回顶部 1. Nullable value types (C# reference) 2019 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:struct
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:struct 1.返回顶部 1. struct(C# 参考) 2015/07/20 struct 类型是一种值类型,通常用来封 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:enum
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:enum 1.返回顶部 1. enum(C# 参考) 2015/07/20 enum 关键字用于声明枚举,一种包含一组被称为枚 ...
随机推荐
- BZOJ3812: 主旋律
传送门 Sol 考虑容斥 强联通图反过来就是一些缩点后的 \(DAG\) 一个套路就是对出(入)度为 \(0\) 的点进行容斥 设 \(g_S,h_S\) 分别表示选了奇数个 \(0\) 入度和偶数个 ...
- CSS Align bottom
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- Linux 安装命令
- SQL-OVER与四种排名函数:ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()
1 SELECT orderid,custid,val, ROW_NUMBER() OVER(ORDER BY val) AS rownum, RANK() OVER(ORDER BY val) AS ...
- 样式 bootstrap purecss Amaze UI 推荐
Bootstrap 简洁.直观.强悍的前端开发框架,让web开发更迅速.简单. Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAV ...
- Difference between scipy.fftpack and numpy.fft
scipy.fftpack 和 numpy.fft 的区别 When applying scipy.fftpack.rfft and numpy.fft.rfft I get the followin ...
- 【JavaScript】闭包应用之数据独立
在平常的开发中,总有一些方法我们在不同的地方都有用的,因此我们会把这些方法封装起来.当我们需要在开发一个功能的时候需要用到一个组合函数(多个函数之间有联系,即有一个或多个共同的全局变量)且这个组合 ...
- YC
package com.hanqi; import java.util.*; public class yc{ public static void main(String[] args) { // ...
- [译] Z-variant (Z变体)
阅读目录 1. Z轴上的区别 2. 问题 Unihan 的 kZVariant 字段 译自: en.wikipedia.org/wiki/Z-variant | 已发布zh.wiki 在Unicode ...
- 89C51单片机的学习
好久都没来写一些东西了 最近老是忙着玩了,都忘记认真学习了. 大概从明天开始就要开始忙了. 1,英语四级 2,单片机课程 3,安卓课程 4,PS 感觉事情好多. 但是我还是心不在焉.好奇怪. 反正就是 ...