(1)Go变量声明、赋值和常量
先简单了解一下控制台输出,在go中,我们使用fmt包中的函数进行在控制台中打印,一般用以下几个函数
fmt.Print() #不换行输出
fmt.Printf() #字符串格式化输出 同C语言
fmt.Println( ) #带换行输出
fmt.Fprintf() fmt.Fprint() fmt.Fprintln() #指定输出流
1.Go变量声明和赋值
var valName type // 单个
var ( //多个
valName1 type
valName2 type
.......
)
变量声明标准格式
Go语言的变量声明的标准格式为:
var 变量名 变量类型
变量声明以关键字 var 开头,后置变量类型,行尾无须分号。
package main
import "fmt"
// 声明变量
// var name string
// var iB int
// 批量声明
var (
name string //""
age int //0
isFlag bool //false
)
/*
*注意:
*声明了全局变量可以不使用,编译器不会报错(因为别人用这个包可能会使用)
*声明了局部变量必须使用,否则编译器报错
*
*go fmt xxx.go 命令可以格式化代码
*/
//str4 := "cuowu" //出错
func main() {
// 1.赋值
name = "jadeshu"
age = 20
isFlag = true
fmt.Print(name)
fmt.Println()
fmt.Println(isFlag)
fmt.Printf("age:%d", age)
// 2.变量声明并赋值
var str string = "hehehe"
fmt.Println(str)
// 自动根据数值进行推导类型
var str2 = "hahhahh"
fmt.Println(str2)
// 3.简单变量声明并赋值
// 只能在局部变量进行短声明赋值 用的较多
// 不能重复声明,且必须声明时赋值
str3 := "heaaaa"
// 这个情况下可以,只要简单赋值语句里有一个变量是新声明的就可以
// 同时还能改变原有变量的值
str3, str4 := "1212", "sdsdsd"
fmt.Println(str3)
fmt.Println(str4)
// 4.匿名变量 用一个下划线表示
// 当忽略某个值时就用它
// 它不会占用内存,也不存在重复声明
// GO语言中函数可以返回多个值,这时候很有用
a, _ := ret() // 忽略返回的y值
fmt.Println(a)
}
func ret() (x,y int) {
return 10,-1
}
输出结果:

2.Go常量和iota
const valName=xxx // 单个
const ( //多个
valName1=xx
valName2=xxx
.......
)
package main
import "fmt"
// 常量在运行期间不允许值改变
// 一个常量声明
const PI = 3.14
// 多个常量一起声明
const (
DIR = 2 * PI
)
// t1 t2是100 t3 t4是200
// 同时声明多个常量时,如果省略了值则表示和上面一行的值相同
const (
t1 = 100
t2
t3 = 200
t4
)
// iota是go语言的常量计数器
// const中每新增一行常量声明将使iota计数一次
// iota可以理解为const语句块中的行索引,
// 使用iota能简化定义,在定义枚举时很有用
const (
m1 = iota
m2
m3
)
// 增强理解iota
const (
n1 = 10
n2
n3 = iota
n4
)
// 增强理解iota
// 多个
const (
s1, s2 = iota+1, iota+2
s3, s4 = iota+1, iota+2
)
// 练习
// const (
// _ = iota
// KB = 1 << (iota*10)
// MB = 1 << (iota*10)
// GB = 1 << (iota*10)
// TB = 1 << (iota*10)
// PB = 1 << (iota*10)
// )
func main() {
fmt.Println(DIR)
fmt.Println(t1)
fmt.Println(t2)
fmt.Println(t3)
fmt.Println(t4)
fmt.Println("============")
fmt.Println(m1)
fmt.Println(m2)
fmt.Println(m3)
fmt.Println("============")
fmt.Println(n1)
fmt.Println(n2)
fmt.Println(n3)
fmt.Println(n4)
fmt.Println("============")
fmt.Println(s1)
fmt.Println(s2)
fmt.Println(s3)
fmt.Println(s4)
fmt.Println("============")
}
结果:

=======================================
package main
import "fmt"
func main() {
//// 随机数种子
//rand.Seed(time.Now().UnixNano())
//
//scoreMap := make(map[string]int, 200)
//for i := 0; i < 100; i++ {
// key := fmt.Sprintf("student%02d", i)
// scoreMap[key] = rand.Intn(100)
//}
//
//fmt.Println(scoreMap)
//
//// 排序map的key
//// 按字符串排序
//keys := make([]string, 0, 100)
//for key := range scoreMap {
// keys = append(keys, key)
//}
//
//sort.Strings(keys)
//// 打印
//for _, key := range keys {
// fmt.Println(key, scoreMap[key])
//}
//var mapSlice = make([]map[string]string, 3)
//for index, value := range mapSlice {
// fmt.Printf("index:%d value:%v\n", index, value)
//}
//
//fmt.Println("after init")
//// 对切片中的map元素进行初始化
//mapSlice[0] = make(map[string]string, 10)
//mapSlice[0]["name"] = "小王子"
//mapSlice[0]["password"] = "123456"
//mapSlice[0]["address"] = "沙河"
//for index, value := range mapSlice {
// fmt.Printf("index:%d value:%v\n", index, value)
//}
// 端口:【address,ip】
info := make(map[int]map[string]string, 3)
info[8080] = make(map[string]string,4)
info[8080]["address"] = "上海"
info[8080]["ip"] = "127.0.0.1"
info[6060] = make(map[string]string,4)
info[6060]["address"] = "北京"
info[6060]["ip"] = "192.168.0.101"
fmt.Println(info)
testInfo:= &map[int]map[string]string{
6000:{
"address":"香港",
"ip":"127.0.0.1",
},
7000:{
"address":"武汉",
"ip":"127.0.0.1",
},
}
fmt.Println(testInfo)
}
(1)Go变量声明、赋值和常量的更多相关文章
- javascript:变量声明&&赋值的提升和函数声明&&定义的提升在不同情况下的表现
console.log(a); //undefined console.log(show); //函数的定义 show(); //aaa123 var a = 1; function ...
- [Golang学习笔记] 04 程序实体1 变量声明
变量声明: Go语言的程序实体包含:变量.常量.函数.结构体和接口,是一门静态类型的编程语言. (在声明变量或常量的时候,需要指定类型,或者给予足够信息是的Go语言能够推导出类型) Go语言变量的类型 ...
- es6变量声明和解构赋值
/*声明: * 本文内容多为学习借鉴性内容,大部分非原创 * 特别感谢阮一峰的 ECMAScript6 入门,推荐大家学习 */ 一.es5变量声明的不足 1.变量提升和函数声明提升 es5的代码加载 ...
- ES6必知必会 (一)—— 变量声明和结构赋值
本文章属于个人对es6一些比较常用的语法的总结归纳,其主要参考阮一峰大神的<a href="http://es6.ruanyifeng.com//">ECMAScrip ...
- Java变量声明和赋值
Java的8种基础类型变量声明,在得到Java 11支持后会有新的语法糖 基础数据类型一共有8种 整数类型:byte.short.int和long 小数类型:float和double 字符类型:cha ...
- main方法中声明8种基本数据类型的变量并赋值
main方法中声明8种基本数据类型的变量并赋值 char→ int→ long→ float→ double byte→ short→
- [BS-00] const限定常量或者变量(初次赋值后),其值不允许被改变
CONST(C中的CONST) const是一个C语言(ANSI C)的关键字,它限定一个变量不允许被改变,产生静态作用.使用const在一定程度上可以提高程序的安全性和可靠性.另外,在观看别人代码的 ...
- js变量声明与赋值以及函数声明
if (!("a" in window)) { var a = 1; } alert(a); 结果:undefined 分析: 首先,所有的全局变量都是window的属性,语句 v ...
- 第3章 Java语言基础----声明成员变量,对变量进行赋值
声明成员变量,对变量进行赋值的正确语句,如下图所示:
随机推荐
- Autofac在.NetCore 下的使用
在工作开发中很多地方都会使用到接口模式开发,这里就会用到依赖注入,.NetCore目前是自带的 ,在 Startup.cs中的 ConfigureServices方法中增加 public void C ...
- webpack+vue搭建vue项目
阅读地址: https://www.jianshu.com/p/23beadfa4aa5 源码地址:https://github.com/Ezoio/IMI-SOURCE-CODE
- Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)
Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件) 一.HttpPost上传文件 public static String getSuffix(fi ...
- 如何回答——请简述MySQL索引类型
想必大家在被问到这个问题的时候,在网上总是能搜到不同的回答,却又各不相同.其实这些答案大部分都是正确的,只不过在阐述MySQL索引类型的时候从不同方面入手而已.这里归纳如下,具体的机制可以参考其他博文 ...
- layui.js源码分析
/*! @Title: Layui @Description:经典模块化前端框架 @Site: www.layui.com @Author: 贤心 @License:MIT */ ;!functi ...
- Matlab相关函数使用
1.cat:拼接两个数组.
- Java编程规范(命名规则)
1.目的 编程规范是对编程的一种约定,主要作用是增强代码的可读性和可维护性,便于代码重用. 2.命名规则 首先要求程序中的各个要素都遵守命名规则,然后在编码中严格按照编码格式编写代码.命名规则包括以下 ...
- TypeScript_基础数据类型
TypeScript 的基础数据类型包含: string.number.boolean.array .object.null.undefined.enmu.void.never.any.tuple 注 ...
- ISCC之Re2
硬核rust逆向 首先去学了一天rust...我TMD IDA打开,跟踪主函数 看一下伪代码,发现有一串密文 跟进去发现一串数据,猜测有可能是flag的加密数据,于是回头去分析算法 发现一个关键点 i ...
- ISCC之msc2
倒立屋 Flag:9102_cCsI 一道典型的LSB隐写,不过提交格式嘛,就很坑了 Stegsolve打开分析图片,注意到RGB三类图片的最低位基本相同,可能藏了东西. 有一个IsCc_2019,反 ...