5.蛤蟆笔记go语言——基本类型

notbaron · · 1455 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

5.蛤蟆笔记go语言——基本类型

基本类型

Go 的基本类型有Basic types

bool

string

int int8  int16  int32 int64

uint uint8 uint16 uint32 uint64 uintptr

byte // uint8 的别名

rune // int32 的别名

    // 代表一个Unicode码

float32 float64

complex64 complex128

同时与导入语句一样,变量的定义“打包”在一个语法块中。

package main

import (

         "fmt"

         "math/cmplx"

)

var (

         ToBe   bool      = false

         MaxIntuint64     = 1<<64 - 1

         z      complex128 = cmplx.Sqrt(-5 + 12i)

)

func main() {

         const f= "%T(%v)\n"

         fmt.Printf(f,ToBe, ToBe)

         fmt.Printf(f,MaxInt, MaxInt)

         fmt.Printf(f,z, z)

}

执行如下:

         bool(false)

         uint64(18446744073709551615)

         complex128((2+3i))

零值

变量在定义时没有明确的初始化时会赋值为_零值_。

零值是:

数值类型为 `0`,

布尔类型为 `false`,

字符串为 `""`(空字符串)。

package main

import "fmt"

func main() {

         var iint

         var ffloat64

         var bbool

         var sstring

         fmt.Printf("%v%v %v %q\n", i, f, b, s)

}

执行:

0 0 false ""

类型转换

表达式 T(v) 将值 v 转换为类型 `T`。

一些关于数值的转换:

var i int = 42

var f float64 = float64(i)

var u uint = uint(f)

或者,更加简单的形式:

i := 42

f := float64(i)

u := uint(f)

与 C 不同的是 Go 的在不同类型之间的项目赋值时需要显式转换。试着移除例子中 float64 或 int 的转换看看会发生什么。

package main

import (

         "fmt"

         "math"

)

func main() {

         var x,y int = 3, 4

         var ffloat64 = math.Sqrt(float64(x*x + y*y))

         var zint = int(f)

         fmt.Println(x,y, z)

}

执行:

         34 5

类型推导

在定义一个变量但不指定其类型时(使用没有类型的 var 或 := 语句),变量的类型由右值推导得出。

当右值定义了类型时,新变量的类型与其相同:

var i int

j := i // j 也是一个 int

但是当右边包含了未指名类型的数字常量时,新的变量就可能是 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("vis of type %T\n", v)

}

执行:

         vis of type int

常量

常量的定义与变量类似,只不过使用 const 关键字。

常量可以是字符、字符串、布尔或数字类型的值。

常量不能使用 := 语法定义。

package main

import "fmt"

const Pi = 3.14

func main() {

         constWorld = "世界"

         fmt.Println("Hello",World)

         fmt.Println("Happy",Pi, "Day")

         constTruth = true

         fmt.Println("Gorules?", Truth)

}

执行:

         Hello世界

         Happy3.14 Day

         Gorules? true

数值常量

数值常量是高精度的 _值_。

一个未指定类型的常量由上下文来决定其类型。

也尝试一下输出 needInt(Big) 吧。

package main

import "fmt"

const (

         Big   = 1 << 100

         Small =Big >> 99

)

func needInt(x int) int { return x*10 + 1 }

func needFloat(x float64) float64 {

         returnx * 0.1

}

func main() {

         fmt.Println(needInt(Small))

         fmt.Println(needFloat(Small))

         fmt.Println(needFloat(Big))

}

执行输出:

21

         0.2

         1.2676506002282295e+29

 

 


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:notbaron

查看原文:5.蛤蟆笔记go语言——基本类型

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1455 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传