GO 从零开始的语法学习二
for循环
if条件里不需要括号
err != nil 判断是否为空
func main(){const filename = "abc.txt"contents , err := ioutil.ReadFile(filename); err != nil{fmt.Println(err)} else{fmt.Printf("%s\n",contents)}
}
复制代码
- if的条件里可以进行赋值
- if的条件里赋值的变量作用域就在这个if语句里
if contents,err := ioutil.ReadFile(filename); err == nil{fmt.Println(string(contents))
}else{fmt.Println("cannit print file contents:",err)
}
复制代码
switch
- switch会自动break,除非使用fallthrough
- switch 后可以没有表达式
func grade(score int) string{g := ""switch {case score < 0 || score >100panic(fmt.Sprintf("Wrong score:%d",score))case score < 60:g = "F"case score < 80:g = "C"case score < 90:g = "B"case score <= 100:g = "A"}return g;
}
复制代码
循环
- for的条件里不需要括号
- for的条件里可以省略初始条件,结束条件,递增表达式
- 没有while
func conbertToBin(n int) string{
result := ""
for ; n > 0; n /= 2{
lsb := n % 2
result = strconv.Itoa(lsb) + result
}return result
}func main(){fmt.Println(//101convertToBin(5),//1101convertToBin(13),convertToBin(5555547),convertToBin(0),)
}
复制代码
func printFile (filename string){file, err := os.Open(filename)if err != nil{}
}scanner := bufio.NewScanner(file)for scanner.Scan(){fmt.Println(scanner.Text())}
}复制代码
- for可以什么条件也不加,此时的for循环为死循环
func forever(){for{fmt.Println("abc")}
}
复制代码
函数
- 函数可返回多个值
func div(a,b int)(int,int){return a/b,a % b
}
复制代码
- 函数返回多个值时可以起名字
- 仅用于非常简单的函数
- 对于调用者而言没有区别
func div(a,b int)(q,r int){q = a / br = a % breturn
}
复制代码
func apply(op func(int ,int) int,a,b int) int {p := reflect.VlueOf(op).Pointer(p).Name()fmt.Printf("Calling function %s with args " +"(%d,%d)",opName,a,b)return op(a,b)
}
复制代码
- 可变参数列表
func sum(numbers ...int) int{sum := 0for i := range values{sum += values[i]}return sum
}
复制代码
#函数语法要点回顾
- 返回值类型写在最后面
- 可返回多个值
- 函数作为参数
- 没有默认参数,可选参数
GO 从零开始的语法学习二相关推荐
- [solidity语法学习二]基于Remix以太坊的BlindAuction模板代码分析
前言 编译环境:Remix. 代码来源:SolidityDoc. 疑难解决来源:Ethereum gitter. 例子三参考:例图. 以太币单位换算:以太币单位. 本文主要由三个例子构成.分别是Sim ...
- 从零开始编写深度学习库(二)FullyconnecteLayer CPU编写
从零开始编写深度学习库(二)FullyconnecteLayer CPU编写 博客:http://blog.csdn.net/hjimce 微博:黄锦池-hjimce qq:1393852684 ...
- 【从零开始学深度学习编译器】十二,MLIR Toy Tutorials学习笔记一
本笔记由学习MLIR Tutorials总结而成,欢迎批评指正. Chapter1: Toy语言和AST MLIR提供了一种Toy语言来说明MLIR的定义和执行的流程.Toy语言是一种基于张量的语言, ...
- 从零开始学JAVA:二、Java基本语法(四)——流程控制
从零开始学JAVA:二.Java基本语法(四)--流程控制 程序流程控制 1.顺序结构 2.分支结构 2.1.if-else结构 2.2.switch-case选择结构 2.3.Scanner类的使用 ...
- Python基础语法学习笔记
Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...
- 【C++学习之路】第二章——C++基础语法学习(1)之黑客攻击系统
2 C++基础语法学习(1)之黑客攻击系统 遵循原则:从实战中学习知识 法律声明:本系统仅能攻击自己搭建的网站,作为学习使用,不会触犯法律 time:2020.01.20 author:姜海天 IDE ...
- mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...
MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...
- Docker学习二:Docker镜像与容器
前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...
- 从零开始编写深度学习库(四)Eigen::Tensor学习使用及代码重构
从零开始编写深度学习库(四)Eigen::Tensor学习使用及代码重构 博客:http://blog.csdn.net/hjimce 微博:黄锦池-hjimce qq:1393852684 一. ...
最新文章
- PCLPCL/OpenNI tutorial 2: Cloud processing (basic)
- 九种东西吃多会...
- 从SAP客户主数据里直接创建商机(Opportunity)
- cnn卷积核参数如何确定_如何确定肉脯软塑包装的热封参数?
- python迭代-可迭代对象与迭代器对象
- poj-1201 Intervals(差分约束)
- jde多目标_《和平精英》PEL职业联赛S3赛季:DKG战队获第四周周冠军,JDE“逆风翻盘”...
- 大数据开发笔记(九):Flink基础
- 美化复选框html,使用CSS3美化复选框checkbox
- [C++项目]C++实现简易的酒店管理系统
- 开机引导界面grub找不到
- 关于计算机的CPU的发展历史,计算机CPU的全部发展历史
- 【技术白皮书】第一章:基于深度学习的文本检测与识别的技术背景
- 【虚幻引擎UE】UE5 UMG布局和视觉设计(自适应篇)
- Jmeter从入门到精通-看这一篇就够了
- 关于log4j日志打印堆栈的记录
- ​韩剧影视剪辑30天5710元,短视频大神教你如何快速变现?
- 又遇见一个被坑的客户,新买的固态是旧的-_-||,应该是SM2246XT主控
- 读《Evolving Algebraic Constructions for Designing Bent Boolean Functions》
- 免费cocos2dx3.x视频教程
热门文章
- qt创建右键菜单,显示在鼠标点击处
- BugkuCTF-WEB题本地管理员
- ubuntu服务器ssh登录密码修改,Ubuntu-18.04 下修改root用户密码,安装SSH服务,允许root用户远程登录,安装vsftp服务器...
- 软件数控编程_这么多CNC数控编程软件, 你觉得哪个好?
- php中带?错误,参考-此错误在PHP中意味着什么?
- 计算机应用基础自考,自考计算机应用基础
- rocketmq 几种队列_关于RocketMQ的知识
- jquery ajax html编码,jQuery AJAX字符编码
- 快速搭建springmvc+spring data jpa工程
- python列表字典_Python常用对字典、列表的操作