[日常] Go语言圣经--复数,布尔值,字符串习题
go语言圣经-复数
1.我们把形如a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。两种精度的复数类型:complex64和complex128,分别对应float32和float64两种浮点数精度
2.complex函数用于构建复数,real和imag函数分别返回复数的实部和虚部
go语言圣经-布尔型
1.布尔值可以和&&(AND)和||(OR)操作符结合,并且有短路行为
2.&&的优先级比||高
go语言圣经-字符串
1.一个字符串是一个不可改变的字节序列,文本字符串通常被解释为采用UTF8编码的Unicode码点(rune)序列
2.内置的len函数可以返回一个字符串中的字节数目,不是字符数目,对于非ASCII字符的UTF8编码会要两个或多个字节
3.+操作符将两个字符串链接构造一个新字符串
4.字符串值也可以用字符串面值方式编写,只要将一系列字节序列包含在双引号即可
5.原生的字符串面值形式是`...`,使用反引号代替双引号用于编写正则表达式,HTML模板、JSON面值、命令行提示信息会很方便
6.UTF8是一个将Unicode码点编码为字节序列的变长编码,Go语言的源文件采用UTF8编码,并且Go语言处理UTF8编码的文本也很出色,Go语言的range循环在处理字符串的时候,会自动隐式解码UTF8字符串
7.每个符号都分配一个唯一的Unicode码点,Unicode码点对应Go语言中的rune整数类型(译注:rune是int32等价类型)。小于256码点值可以写在一个十六进制转义字节中,例如\x41对应字符'A',更大的码点则必须使用\u或\U转义形式
7.utf8.RuneCountInString(s)函数 统计字符个数
8.四个包对字符串处理尤为重要:bytes、strings、strconv和unicode包
9.将一个整数转为字符串,一种方法是用fmt.Sprintf返回一个格式化的字符串;另一个方法是用strconv.Itoa(“整数到ASCII”):
10.字符串转换成整数 strconv.ParseInt strconv.ParseFloat
练习 3.10: 编写一个非递归版本的comma函数,使用bytes.Buffer代替字符串链接操作。
练习 3.11: 完善comma函数,以支持浮点数处理和一个可选的正负号的处理。
练习 3.12: 编写一个函数,判断两个字符串是否是是相互打乱的,也就是说它们有着相同的字符,但是对应不同的顺序。
package main import(
"fmt"
"strings"
"bytes"
) func main(){
fmt.Println(comma(-5123456.23))
fmt.Println(compare("abec","ecab"))
}
/*
练习 3.10: 编写一个非递归版本的comma函数,使用bytes.Buffer代替字符串链接操作。 练习 3.11: 完善comma函数,以支持浮点数处理和一个可选的正负号的处理。
*/
func comma(str float64)string{
//整型转换成字符串
s := fmt.Sprintf("%.2f",str)
//取出小数点后面部分
var end string
if dot := strings.LastIndex(s, "."); dot >= 0 {
end = s[dot:]
s = s[:dot]
}
num := len(s)
var buf bytes.Buffer
j := 1
for i:=num-1;i>=0;i--{
buf.WriteByte(s[i])
if j%3==0 && i!=0{
buf.WriteString(",")
}
j++
}
res:=buf.String()
var r bytes.Buffer
//反转字符串
for i:=len(res)-1;i>=0;i--{
r.WriteByte(res[i])
}
r.WriteString(end)
return r.String()
}
//练习 3.12: 编写一个函数,判断两个字符串是否是是相互打乱的,也就是说它们有着相同的字符,但是对应不同的顺序。
func compare(str1 string,str2 string)bool{
//比较两个字符串的长度,外层循环是较长的
num1:=strings.Count(str1,"")
num2:=strings.Count(str2,"")
if num2 > num1{
str1,str2=str2,str1
}
var res bool
for _,v :=range str1{
res = false
for _,sv :=range str2{
if v== sv{
res =true
}
}
if !res{
break
}
}
return res
}
[日常] Go语言圣经--复数,布尔值,字符串习题的更多相关文章
- [日常] Go语言圣经--复合数据类型,数组习题
go语言圣经-复合数据类型 1.以不同的方式组合基本类型可以构造出来的复合数据类型 2.四种类型——数组.slice.map和结构体 3.数组是由同构的元素组成——每个数组元素都是完全相同的类型——结 ...
- [日常] Go语言圣经-Panic异常,Recover捕获异常习题
Go语言圣经-Panic异常1.当panic异常发生时,程序会中断运行,并立即执行在该goroutine中被延迟的函数(defer 机制)2.不是所有的panic异常都来自运行时,直接调用内置的pan ...
- [日常] Go语言圣经-文本和HTML模板习题
Go语言圣经-文本和HTML模板 练习 4.14: 创建一个web服务器,查询一次GitHub,然后生成BUG报告.里程碑和对应的用户信息. 1.查看下文档godoc net/http |grep H ...
- [日常] Go语言圣经-字节切片与字符串
1.一个字符串是一个不可改变的字节序列2.文本字符串通常被解释为采用UTF8编码的Unicode码点(rune)序列3.内置的len函数可以返回一个字符串中的字节数目4.第i个字节并不一定是字符串的第 ...
- [日常] Go语言圣经-基于select的多路复用习题
练习 8.8: 使用select来改造8.3节中的echo服务器,为其增加超时,这样服务器可以在客户端10秒中没有任何喊话时自动断开连接. reverb3.go package main import ...
- 3.Python自我修炼(升仙中....整数,布尔值,字符串,for循环)
python学习(整数,布尔值,字符串,for循环) 1.整数 在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使用long类型.但是在python3中不存 ...
- Swift语言指南(七)--语言基础之布尔值和类型别名
原文:Swift语言指南(七)--语言基础之布尔值和类型别名 布尔值 Swift有一个基本布尔类型,叫做布尔(bool),布尔值又称逻辑值(logical),因为它只能为真(true)或假(false ...
- [日常] Go语言圣经-函数多返回值习题
Go语言圣经-函数多返回值1.在Go中,一个函数可以返回多个值2.许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信息3.如果一个函数将所有的返回值都显示的变量名,那么该 ...
- [日常] Go语言圣经-错误,函数值习题
Go语言圣经-错误 1.panic异常.panic是来自被调函数的信号,表示发生了某个已知的bug 2.任何进行I/O操作的函数都会面临出现错误的可能 3.错误是软件包API和应用程序用户界面的一个重 ...
随机推荐
- MySQL1安装
---恢复内容开始--- (1)安装MySQL ①ZIP安装 ②MSI安装(Windows Installer) Ⅰ 先从官网下载 目前选择使用Typical安装↑ 目前不勾选配置选项↑ 找到配置向 ...
- Grid++repor报表连接事件
//定义报表模板 private GridppReport Report = new GridppReport(); //载入报表模板数据 Report.LoadFromFile(GridppRepo ...
- 验证FluentValidation
FluentValidation https://www.xcode.me/code/fluentvalidation-dot-net-library 这里写得很详细了
- Javascript如何避免连续调用中取到不存在的属性而导致报TypeError错?
背景: 在最近的 NODEJS 项目中,涉及到数据库的查询,回调函数里返回了查询结果,我这样做处理然后返回给前端: return results.collect_coupon[0].count 但是这 ...
- <c:if test=""></c:if>如何判断空(使用例子)
<c:if test=""></c:if>如何判断空(使用例子) 标签: session / 前端 / c-if userName是登录的时候放到sessi ...
- linux的RPM软件包管理工具
RPM(Redhat Package Manage)原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采 ...
- iOS-iOS9系统SEGV_ACCERR问题处理【v3.6.3的一些bug修复】
前言 最近APP不断地更新版本,却发现一些未知的错误导致崩溃,我把能测出来的错误,全部修复了,因为项目里集成了腾讯Bugly,看了下后台的崩溃,依旧千篇一律啊,然后就纠结了,很多SEGV_ACCERR ...
- 10-05 Java 内部类概述和讲解
内部类的概述 /* 内部类概述: 把类定义在其他类的内部,这个类就被称为内部类. 举例:在类A中定义了一个类B,类B就是内部类. 内部的访问特点: A:内部类可以直接访问外部类的成员,包括私有. B: ...
- Sublime text3 Package Control不能使用
Package Control打开时提示"There are no availabel for installation"的两个处理办法: 第一种: ping一下sublime的服 ...
- (转)pathlib路径库使用详解
原文:https://xin053.github.io/2016/07/03/pathlib%E8%B7%AF%E5%BE%84%E5%BA%93%E4%BD%BF%E7%94%A8%E8%AF%A6 ...