Go语学习笔记 - 变量、常量 | 从零开始Go语言

简介: Go语学习笔记 - 变量、常量 | 从零开始Go语言

学习笔记,写到哪是哪。


1、变量

变量的声明比较自由,和python比较像。方式有多种,可以多重定义。


样例如下



var (
  k int64  = 100
  l string = "asd"
)
//变量声明
func variable() {
  var a int = 123
  var b, c int = 10, 100
  var d = "haha"
  var e = 1.9
  var f, g = 10, 1.8
  h := "haha"
  i, j := 10, "haha"
  //e := 19
  fmt.Println(a, b, c)
  fmt.Println(d)
  fmt.Println(e)
  fmt.Printf("f的类型为:%T,g的类型为:%T,f=%v,g=%v\n", f, g, f, g)
  fmt.Println(h)
  fmt.Printf("i的类型为:%T,j的类型为:%T,i=%v,j=%v\n", i, j, i, j)
  fmt.Println(k, l)
}

执行结果


123 10 100

haha                                      

1.9                                      

f的类型为:int,g的类型为:float64,f=10,g=1.8

haha                                      

i的类型为:int,j的类型为:string,i=10,j=haha

100 asd    


注意


1、使用var对变量进行声明的时候,如果不指定类型,会自动给一种类型。


2、如果是":="来定义变量,只能在方法内,不能定义全局。


image.png


3、如果使用":="不能定义已经存在的变量。


4、var()写法一般用于声明全局变量。


2、常量

常量是一个简单值的标识符,在程序运行时,不会被修改的量。


样例如下


const (

x  = "abc"

y  = len(x)

z  = unsafe.Sizeof(x)

w1 = iota

w2

w3

w4 = "ooo"

w5 = "zzz"

w6

w7 = iota

w8

)

//常量声明
func constant() {
  const age int = 18
  const name = "小王"
  const param1, param2, param3 = 1, false, "kk"
  fmt.Printf("%v今年%d岁,其他信息:%v%v%v\n", name, age, param1, param2, param3)
  fmt.Println(x, y, z)
  fmt.Println(w1, w2, w3, w4, w5, w6, w7, w8)
}

执行结果


小王今年18岁,其他信息:1falsekk          

abc 3 16                                  

3 4 5 ooo zzz zzz 9 10    


注意


1、const在方法内的使用和var基本一致,也可以进行多重定义。


2、在常量定义中可以使用一些内置函数,len()、unsafe.Sizeof()等。


3、常量定义中有个iota作为计数常量使用,会按照常量数进行+1赋值,可以中断再恢复。目前我还认识不到这个有什么具体的使用场景,后面继续学习。


小结

学习完这些其实有不少疑问,后面还需要持续思考回顾。


相关文章
|
1天前
|
安全 Java Go
探索Go语言在高并发环境中的优势
在当今的技术环境中,高并发处理能力成为评估编程语言性能的关键因素之一。Go语言(Golang),作为Google开发的一种编程语言,以其独特的并发处理模型和高效的性能赢得了广泛关注。本文将深入探讨Go语言在高并发环境中的优势,尤其是其goroutine和channel机制如何简化并发编程,提升系统的响应速度和稳定性。通过具体的案例分析和性能对比,本文揭示了Go语言在实际应用中的高效性,并为开发者在选择合适技术栈时提供参考。
|
5天前
|
运维 Kubernetes Go
"解锁K8s二开新姿势!client-go:你不可不知的Go语言神器,让Kubernetes集群管理如虎添翼,秒变运维大神!"
【8月更文挑战第14天】随着云原生技术的发展,Kubernetes (K8s) 成为容器编排的首选。client-go作为K8s的官方Go语言客户端库,通过封装RESTful API,使开发者能便捷地管理集群资源,如Pods和服务。本文介绍client-go基本概念、使用方法及自定义操作。涵盖ClientSet、DynamicClient等客户端实现,以及lister、informer等组件,通过示例展示如何列出集群中的所有Pods。client-go的强大功能助力高效开发和运维。
22 1
|
5天前
|
SQL 关系型数据库 MySQL
Go语言中使用 sqlx 来操作 MySQL
Go语言因其高效的性能和简洁的语法而受到开发者们的欢迎。在开发过程中,数据库操作不可或缺。虽然Go的标准库提供了`database/sql`包支持数据库操作,但使用起来稍显复杂。为此,`sqlx`应运而生,作为`database/sql`的扩展库,它简化了许多常见的数据库任务。本文介绍如何使用`sqlx`包操作MySQL数据库,包括安装所需的包、连接数据库、创建表、插入/查询/更新/删除数据等操作,并展示了如何利用命名参数来进一步简化代码。通过`sqlx`,开发者可以更加高效且简洁地完成数据库交互任务。
13 1
|
5天前
|
算法 NoSQL 中间件
go语言后端开发学习(六) ——基于雪花算法生成用户ID
本文介绍了分布式ID生成中的Snowflake(雪花)算法。为解决用户ID安全性与唯一性问题,Snowflake算法生成的ID具备全局唯一性、递增性、高可用性和高性能性等特点。64位ID由符号位(固定为0)、41位时间戳、10位标识位(含数据中心与机器ID)及12位序列号组成。面对ID重复风险,可通过预分配、动态或统一分配标识位解决。Go语言实现示例展示了如何使用第三方包`sonyflake`生成ID,确保不同节点产生的ID始终唯一。
go语言后端开发学习(六) ——基于雪花算法生成用户ID
|
3天前
|
NoSQL Go Redis
Go语言中如何扫描Redis中大量的key
在Redis中,遍历大量键时直接使用`KEYS`命令会导致性能瓶颈,因为它会一次性返回所有匹配的键,可能阻塞Redis并影响服务稳定性。为解决此问题,Redis提供了`SCAN`命令来分批迭代键,避免一次性加载过多数据。本文通过两个Go语言示例演示如何使用`SCAN`命令:第一个示例展示了基本的手动迭代方式;第二个示例则利用`Iterator`简化迭代过程。这两种方法均有效地避免了`KEYS`命令的性能问题,并提高了遍历Redis键的效率。
9 0
|
4天前
|
监控 Serverless Go
Golang 开发函数计算问题之Go 语言中切片扩容时需要拷贝原数组中的数据如何解决
Golang 开发函数计算问题之Go 语言中切片扩容时需要拷贝原数组中的数据如何解决
|
4天前
|
关系型数据库 MySQL 数据库连接
Go语言中使用sqlx来操作事务
在应用中,数据库事务保证操作的ACID特性至关重要。`github.com/jmoiron/sqlx`简化了数据库操作。首先安装SQLX和MySQL驱动:`go get github.com/jmoiron/sqlx`和`go get github.com/go-sql-driver/mysql`。导入所需的包后,创建数据库连接并使用`Beginx()`方法开始事务。通过`tx.Commit()`提交或`tx.Rollback()`回滚事务以确保数据一致性和完整性。
8 0
|
Go 索引
Go实战(二)-变量、语句、函数、指针、关键字(下)
Go实战(二)-变量、语句、函数、指针、关键字
101 0
Go实战(二)-变量、语句、函数、指针、关键字(下)
|
Go
Go实战(二)-变量、语句、函数、指针、关键字(中)
Go实战(二)-变量、语句、函数、指针、关键字
92 0
Go实战(二)-变量、语句、函数、指针、关键字(中)
|
Go
Go实战(二)-变量、语句、函数、指针、关键字(上)
Go实战(二)-变量、语句、函数、指针、关键字
105 0
Go实战(二)-变量、语句、函数、指针、关键字(上)