首页 > 其他分享 >3 go语言变量类型

3 go语言变量类型

时间:2023-04-25 17:58:40浏览次数:31  
标签:语句 12 const 变量 fmt func go iota 语言

目录

3 go语言变量类型

1 数字

1.1 int、int8、int16、int32、int64

int类型 表示范围
int 整数 - 分正负
int8 1个字节,表示 -128 ~ +127
int16 2个字节,表示 -2的15次方 ~ +2的15次方
int32 表示 -2的31次方 ~ +2的31次方
int64 表示 -2的63次方 ~ +2的63次方

1.2 uint、uint8、uint16、uint32、uint64

int类型 表示范围
uint 正整数
uint8 1个字节,表示 0 ~ 256
uint16 2个字节,表示 0 ~ +2的15次方
uint32 表示 -2的31次方 ~ +2的31次方
uint64 表示 -2的63次方 ~ +2的63次方

1.3 浮点型

浮点型 表示范围
float32 小数点后7位
float64 小数点后16位(只要足够长默认是64)
var p1 float32 = 12.12345678901234567890
var p2 float64 = 12.12345678901234567890

fmt.Println(p1)  // 12.123457
fmt.Println(p2) // 12.123456789012346

1.4 复数

复数 表示
complex64
complex128
	var a complex64 = 4 + 4i
	var b complex64 = 9 + 7i

	fmt.Println(a + b) // (13+11i)

1.5 byte和rune

名称 表示
byte unit8的别名 - ascii码的1个字符长度
rune int32的别名 - unicode的1个字符长度

python 中len()函数算的是字节长度

2 字符串

string

  • 双引号:字符串
  • 单引号:表示一个字符 - 默认使用int32字符串

字符串 没有则返回空字符串

数字类型 则返回0

3 布尔类型

名称
true
false

4 常量

常量:恒定不变的常量,定义后值固定不变,不允许修改,用const关键字定义

  • 定义单个
const name string = "duo"  // 完整定义后不允许改
const name = "duo"  

  • 定义多个
// 1 这种方式定义多个,只能为同一类型
const name2,age2 = "duo","12"


// 2 可以定义多个不同类型的常量
const (
   loveGod string = "Cupid"
   warGod string = "Athens"
   godAge int = 100
)


// 3 同时定义多个常量,如果没有赋初值,初值就是上一个的值
const (
		a1 = 13
		b1 = 12
		c
		d
		e
		f
)
fmt.Println(c, d, e, f)  //12 12 12 12

5 iota 常量生成器

关键字iota,创建一些列相关的值,省略逐个定义

(1)定义规则

iota声明的常量默认会自增1,iota可理解为const语句块中的行索引

	// iota 常量生成器
	const (
		a1 = 12
		b1 = 12
		c  = iota
		d
		e
		f
	)
	fmt.Println(c, d, e, f)  //2 3 4 5

  // 支持位运算
	const (
		KB = 1 << (10 * iota)
		MB
		GB
	)
	fmt.Println(KB, MB, GB)  // 1 1024 1048576

iota注意事项:

  • ① iota的使用,必须在const语句块
  • ② iota 放在第几行,值就是多少,后续的都会自增

6 语句块、可见规则、作用域范围

6.1 语句块

语句块是指:有由大括号围起来的一个语句序列,比如for循环语句块if/else判断语句块。在语句块内部声明的变量对外部不可见,块把声明围起来,决定了它的作用域

6.2 可见行规则

包通过 导出 机制控制 变量结构体函数等数据可见性

  • 可见行规则:

全局可见:首字母大写,可导出

包内可见:首字母小写,不可导出

6.3 作用域范围

(1)全局变量

根据可见行规则,决定在包内可用还是在全局可用

(2)局部变量

① 不同的层级作用域

外层定义的变量在内层可以使用,内层定义的变量外层不可以使用。 常见的 if, for 等都是不同的代码块, 每个代码块组成了一个层级。

② 内层变量覆盖外层变量

一个程序可以包含多个相同名称的变量,只要这些变量处在不同的语句块内,而内层的会覆盖外出的同名变量

package main

import "fmt"
// 语句块
var phoneVersion string = "12 plus"

func printVersion (){
	var phoneVersion string = "11 plus"
	fmt.Println(phoneVersion)
}

func main() {
	fmt.Println(phoneVersion)
	printVersion()
}
-------------
12 plus
11 plus

7 函数

函数 是将一个或者一类问题包装为一个代码块,可以被多次调用,提高代码重用性。

7.1 语法规则

func 函数名(参数1 类型, 参数2 类型, ...) (返回值1类型, 返回值2类型, ...) {

		逻辑...
    return 返回值1, 返回值2, ...
}	

/Users/duoduo/mianshi/django_1

// 普通函数,有参数 有返回值
func sayHello(name,sentence string) string {
   fmt.Printf("%s说了:%s",name,sentence)
   return sentence
}

// 调用
sayHello("duoduo","hello world!")

7.2 匿名函数

匿名函数赋值给一个变量

var a string = "duoduo"

func test(b int) {
   var f func() int = func() int {
      fmt.Printf(a)
      return b
   }
   f()
}

7.3 闭包函数

func test1() func() {
   t := 10
   ff := func() {
      fmt.Println(t)
   }
   return ff
}

标签:语句,12,const,变量,fmt,func,go,iota,语言
From: https://www.cnblogs.com/DuoDuosg/p/17353381.html

相关文章

  • Django框架——路由分发、名称空间、虚拟环境、视图层三板斧、JsonResponse对象、requ
    路由分发#Django支持每个应用都可以有自己独立的路由层、静态文件、模版层。基于该特性多人开发项目就可以完全解耦合,之后利用路由分发还可以整合到一起多个应用都有很多路由与视图函数的对应关系这个时候可以拆分到各自的路由层中使用路由分发之前总路由直接是路由与视图......
  • golang 中通过strings/bytes/bufio 等包实现相关IO
    在go的IO中,除了io、os等包,我们还有strings、bytes、bufio等实现IO读写,这其中有些实现了io.Reader,有些同时实现了io.Reader和io.Writer接口。接下来我们一个个看相关的使用。1.strings在strings包中,只实现了Reader,我们看看其代码://实现的readertypeRea......
  • LLM(大语言模型)解码时是怎么生成文本的?
    Part1配置及参数transformers==4.28.1源码地址:transformers/configuration_utils.pyatv4.28.1·huggingface/transformers(github.com)文档地址:Generation(huggingface.co)对于生成任务而言:text-decoder,text-to-text,speech-to-text,andvision-to-textmodels,有以......
  • go语言入门
    go语言入门go简介go语言,golang,是谷歌公司开发的,是编译型语言。编译型语言,需要将go代码编译成可执行文件,然后就可以在相应的系统上跑了,而开发环境中,我们需要下载gosdk,这个是go管理代码资源的工具,我们可以通过gobuild命令来编译go代码,gorun来编译+运行go代码(编译的代码即用即......
  • C++语言亚马逊国际获取AMAZON商品详情 API接口
    跨境电子商务是一种全新的互联网电商模式,运用电子化方式促成线上跨境交易,利用跨境物流运送商品,有利于打破传统的贸易格局,成为新的经济增长点。对我国来说,跨境电商平台正用一种全新的力量改变我国产业链的结构,并有利于增加贸易机会,拓展我国外贸在国际市场的广度与深度,赢得广阔的海......
  • django打包成whl包并分发
    django打包成whl包并分发python中下载setuptools工具,打包成whl包结构公司内部写的包,只给公司内部使用,可以开源出来公司写好的项目,打包好,发送给客户,客户可以直接运行起来,不需要下载依赖注意:之前下载的第三包都是:requests-2.28.2-py3-none-any.whlwhl结尾的打包好的包,可以......
  • C语言 指针也是数组
    #include<stdio.h>main(){char*p="abcdef";printf("%c",*p);printf("\n%c",*(p+1));printf("\n%c",p[0]);printf("\n%c",p[1]);getchar(); }    ......
  • go语言 把python项目打包、变量类型、常量、函数基础、函数高级
    把python项目打包#https://zhuanlan.zhihu.com/p/624648232#python----》setuptools--》whl包结构公司内部写了包---》公司内部用---》开源出来公司写好的项目,打包好,发给客户,客户可以直接运行起来#你们下的第三方包都是:requests-2.28.2-py3-none-any.whlwhl......
  • 仿Django框架-基于wsgiref模块和jinja2模块写一个简单的框架 主流框架简介 动静态网
    目录仿Django框架-基于wsgiref模块和jinja2模块写一个简单的框架一、前期需要的了解背景知识web框架的本质理解1:连接前端与数据库的中间介质理解2:socket服务端手写web框架的大概思路1.编写socket服务端代码2.浏览器访问响应无效>>>:HTTP协议3.根据网址后缀的不同获......
  • golang 通过 os 包进行文件读写
    go中os包主要与操作系统打交道,实际底层还是通过相关的系统调用实现文件的读写操作,今天我们就来聊聊通过os包实现文件的读写操作。我们在使用os包进行相关操作时,主要流程:读操作open->read->close写操作open->read->write->close总体来说,读写操作都......