(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语言基础----声明成员变量,对变量进行赋值
声明成员变量,对变量进行赋值的正确语句,如下图所示:
随机推荐
- java之hibernate之session中对象的生命周期
1. session是用来执行对象的crud操作,并且session是对象事务工厂.session是线程级别的,所以生命周期比较短. 2.session中对象的生命周期图: 3.session中对象的 ...
- Java中使用Log4j记录错误、输出日志
简介: Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进 ...
- ② Python3.0 运算符
Python3.0 语言支持的运算符有: 算术运算符.比较(关系)运算符.赋值运算符.逻辑运算符.位运算符.成员运算符.身份运算符.运算符优先级 一.算术运算符 常见的算术运算符有+,-,*,/,%, ...
- 解决 Jumpserver coco 使用登录用户(ldap)进行SSH连接目标主机,忽略系统用户
前言 Jumpserver 作为国内流行的开源堡垒机,很多公司都在尝试使用,同时 Jumpserver 为了契合众多公司的用户认证,也提供了 LDAP 的用户认证方式,作为 Jumpserver 的用 ...
- php 加密
PHP 自带的加密解密函数 目前经常使用的加密函数有:md5(), sha1(), crypt(), base64_encode(), urlencode() .其中 md5(), sha1(), c ...
- Linux在丢失的情况下重置密码
1.开机菜单是 移动光标到第一行 --敲击e 2.找到UTF-8,加上空格rd.break,敲击ctrl+x 3.输入以下命令 mount -o remount,rw /sysroot chroot ...
- 源码解读之File
文件和目录路径名的抽象表示形式. 我们知道,对于不同的操作系统,文件路径的描述是不同的 比如 windows平台:用\ linux平台:用/ 四个构造方法 API: 文件自身属性读取 创建 ...
- Java抽象语法树AST,JCTree 分析
JCTree简要分析文章目录JCTree简要分析JCAnnotatedTypeJCAnnotationJCArrayAccessJCArrayTypeTreeJCAssertJCAssignJCAss ...
- SpringCloud学习心得—1.3—Eureka与REST API
SpringCloud学习心得—1.3—Eureka与REST API Eureka的REST API接口 API的基本访问 Eureka REST APIEureka 作为注册中心,其本质是存储 ...
- C语言实验1—— C中的指针和结构体
问题 实现一个算法,检测单链表中是否有环,如果有环还要得到环的入口. 分析 判断是否有环:快慢指针法(也叫“龟兔赛跑”),慢指针每次移动一位,快指针每次移动两位,如果有环,他们一定会相遇. 求环的入口 ...