Go语言笔记:变量

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

变量指向一个内存地址,其中存储了某种类型的值。在静态语言中,此内存存储的变量类型不可变。

  1. Go 中的变量如何声明?
  2. Go 变量声明可以指定哪些类型?
  3. Go 中如何实现类型的转换和断言?

1. Go 中的变量如何声明

使用 var 关键词声明变量,有以下几种可变形式:

  1. 简单的类型声明:var a int
  2. 声明并赋初值:var a int = 1 或 var a = 1
  3. 同时声明多个变量: var a, b = 1, 2

当声明初始值时,可以不用指定类型,Go 会根据赋值判断并自动定义变量的类型。

以下为变量声明的示例:

package main

import "fmt"

func main() {
  var a int 
  var b int = 2 
  var c = 3 
  
  var d, e  = 4, 5
  
  fmt.Printf("a: %d, b: %d, c: %d, d: %d, e: %d", a, b, c, d, e)
}

Go 还提供了省略 var 关键词的声明方式,需要注意的是,已经声明的变量不能再次使用 :=,除非左边有新的变量:

package main

import "fmt"

func main() {
    a := 1
    fmt.Println(a)
    
    a, b := 2, 3
    fmt.Printf("a: %d, b: %d", a, b)
}

2. Go 变量声明可以指定哪些类型

  • 数字类型
  • 字符串类型
  • 布尔类型

数字类型:

int和uint的大小与运行环境的位数相关,int8是8bit,取值范围为-128到127

int,int8,int16,int32,int64
uint,uint8,uint16,uint32,uint64

complex 是复数类型

float32,float64,complex64,complex128

字符串类型

字符串底层是作为一个字节序列存储的

布尔类型就是我们常用的 true 和 false

3. Go 中如何实现类型的转换

  1. int -> int64
  2. string -> int
  3. int -> string

更多转换查看 strconv包

注意:int 转换为 int64 在32位机器上存在精度问题。

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // int 到 int64
    a := 1
    b := int64(a)
    fmt.Printf("a: %d, b: %d", a, b)

    // string 到 int
    c := "123"
    d, _ := strconv.Atoi(c)
    fmt.Printf("c: %s, d %d", c, d)

    // int 到 string
    e := 234
    f := strconv.Itoa(e)
    fmt.Printf("e: %d, f %s", e, f)

    // float32 到 string
    g := 3.14
    h := strconv.FormatFloat(g, 'E', -1, 32)
    fmt.Printf("g: %f, h: %s", g, h)
}

Reference


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

本文来自:Segmentfault

感谢作者:Donne

查看原文:Go语言笔记:变量

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

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