数据类型

布尔类型

a. var b bool 和 var b bool = true 和 var b = false
b. 操作符 == 和 !=
c. 取反操作符: !b
d. && 和 || 操作符
e. 格式化输出占位符: %t

package main

import "fmt"

func boolTest(){
var a bool = true var b bool //bool类型不给定值 默认false fmt.Println(a,b) // == 和 !=
fmt.Println(a == true, b== false, a != true) // 取反 ! fmt.Printf("a取反 %t", !a) /*
&&(都相同是才为true)
|| (有一个为true则结果就为true)
*/ if a == true && b == true{
fmt.Println("right")
}else{
fmt.Println("no right")
} if a == true && b == true{
fmt.Println("right")
}else{
fmt.Println("no right")
} // 格式化输出 用Printf %t fmt.Printf("a的值为:%t", a) /*
true false
true true false
a取反 falseno right
no right
a的值为:true
*/ } func main(){
boolTest()
}

整数和浮点型

a. int8、int16、int32、int64
b. uint8、uint16、uint32、uint64
c. int 和 uint,和操作系统平台相关
d. float32 和 float64浮点类型
e. 所有整数 初始化为0,所有浮点数初始化为0.0,布尔类型初始化为false

package main

import "fmt"

func boolTest(){
var a bool = true var b bool //bool类型不给定值 默认false fmt.Println(a,b) // == 和 !=
fmt.Println(a == true, b== false, a != true) // 取反 ! fmt.Printf("a取反 %t", !a) /*
&&(都相同是才为true)
|| (有一个为true则结果就为true)
*/ if a == true && b == true{
fmt.Println("right")
}else{
fmt.Println("no right")
} if a == true && b == true{
fmt.Println("right")
}else{
fmt.Println("no right")
} // 格式化输出 用Printf %t fmt.Printf("a的值为:%t", a) /*
true false
true true false
a取反 falseno right
no right
a的值为:true
*/ } func intTest(){
var a1 int8 = // -127-128
var a2 int =
fmt.Println(a1,a2) var a3 int
// a3 =a1 不同的数据类型不能赋值 这样写 不对 应该 把 a1转为int类型
a3 = int(a1)
fmt.Println(a3) var a4 uint8 = // 无符号 0-128
fmt.Println(a4) /*
124 885555555
124
100
*/
} func floatTest(){
var i float32
var j float64 = 258.336
var n float64
fmt.Println(i,j,n)
} func main(){
//boolTest()
// intTest()
floatTest()
/*
0 258.336 0
*/
}

a. Go是强类型语言,不同类型相加以及赋值是不允许的
b. 那怎么样才能实现,不同类型相加呢?  强转
c. 输出占位符:整数%d,%x十六进制,%f浮点数

字符串类型

a. var str string
b. var str string = “hello world”
c. 字符串输出占位符%s
d. 万能输出占位符: %v

字符串的两种 表示方法

a. 双引号, “”,可以包含控制字符
b. 反引号 ``所有字符都是原样输出

package main
import “fmt”
func main() {
var str = “hello world\n\n”
var str2 = `hello \n \n \n`
fmt.Println(“str=“, str)
fmt.Println(“str2=“, str2)
}

字符串常用操作

a. 长度:len(str)
b. 拼接:+,fmt.Sprintf
c. 分割:strings.Split
d. 包含: strings.Contains
e. 前缀或后缀判断:strings.HasPrefix, strings.HasSuffix
f. 字符串出现的位置: strings.Index(), strings.LastIndex()
g. join操作: strings.Join(a[]string, sep string)
package main

import (
"fmt"
"strings"
) func jbyf() {
var a string = "hello"
var b = "world" c := "hello world " fmt.Println(a, b, c) var d = "an\nc" // 有特殊字符 则转义 fmt.Println(d) d = `an\nc` // 原样输出 fmt.Println(d)
} func commonMethod() {
aa := "lol is bad, but i like play lol"
// 长度
aLen := len(aa)
fmt.Printf("aa的长度:%d\n", aLen) //aa的长度:31 // 字符串拼接 aaStr := "hello" + "world"
fmt.Println(aaStr) // helloworld
bbStr := fmt.Sprintf("%s-%s", "hello", "china") // hello-china
fmt.Println(bbStr) // 字符串分割 cc := "i-n-j" dd := strings.Split(cc, "-")
fmt.Println(dd) // [i n j]
fmt.Println(dd[]) // n // 包含 if strings.Contains(aa, "lol") {
fmt.Println("aa is contains lol")
} else {
fmt.Println("aa is not contains lol")
} // 前缀和后缀判断 if strings.HasPrefix(aa, "lol") {
fmt.Println("aa is start lol")
} else {
fmt.Println("aa is not start lol")
} if strings.HasSuffix(aa, "lol") {
fmt.Println("aa is end lol")
} else {
fmt.Println("aa is not end lol")
} // 自字符串出现的位置 fmt.Println(strings.Index(aa, "lol"))
fmt.Println(strings.LastIndex(aa, "lol")) // Join 操作
var strArr [] string = [] string{"aa", "bb", "cc"}
fmt.Println(strings.Join(strArr, "*"))
} func main() {
// jbyf()
commonMethod()
}

操作符

a. 逻辑操作符, == 、 != 、<、<=、>=
b. 算数操作符, +、-、* 、 /

go的基本结构

package main

import "fmt"

func main(){
fmt.Println("hello world")
}
. 任何一个代码文件隶属于⼀个包
. import 关键字,引用其他包:
import(“fmt”)
import(“os”)
通常习惯写成:
import (
“fmt”
“os”
)

3. 开发可执行程序,package main,
并且有且只有一个main入口函数
4. 包中函数调用:
a. 同一个包中函数,直接用函数名调用
b. 不同包中函数,通过包名+点+ 函数名  进行 调用
5. 包访问控制规则:
a. 大写意味着这个函数/变量是可导出的
b. 小写意味着这个函数/变量是私有的,
包外部不能访问

 

字符串原理解析

1. 字符串底层就是一个byte数组,所以可以和[]byte类型互相转换
2. 字符串中的字符是不能修改的,那怎么修改呢
3. 字符串是由byte字节组成,所以字符串的长度是byte字节的长度
4. rune类型用来表示utf8字符,一个rune字符由1个或多个byte组成

package main

import "fmt"

func main() {
var aa = "hello 世界" fmt.Printf("aa[0]=%c len(aa)=%d\n", aa[], len(aa)) // aa[0]=h len(aa)=12 字节的长度 一个中文占3个字节 for index, str := range aa {
fmt.Printf("aa[%d]=%c\n", index, str)
}
/*
aa[0]=h
aa[1]=e
aa[2]=l
aa[3]=l
aa[4]=o
aa[5]=
aa[6]=世
aa[9]=界
*/ // 修改字符串 var bb []byte
bb = []byte(aa)
fmt.Println(bb) // [104 101 108 108 111 32 228 184 150 231 149 140] bb[] = 'H'
aa = string(bb)
fmt.Println(aa) // Hello 世界
fmt.Printf("aa的长度:%d\n", len(aa)) // var cc []rune cc = []rune(aa)
fmt.Println(cc) // fmt.Printf("aa的长度:%d", len(aa))
      fmt.Printf("cc的长度:%d\n", len(cc)) // 8
      fmt.Printf("aa的长度:%d\n", len(aa)) // 12
     fmt.Printf("aa[7] = %c\n", aa[7]) // aa[7] = ¸
     fmt.Printf("cc[7] = %c\n", cc[7]) // cc[7] = 界
}

字符串练习

练习1:写一个程序,对英问字符串进行逆序。
练习2:写一个程序,对包含中文的字符串进行逆序。
练习3:写一个程序,判断一个字符串是否是回文

package main

import "fmt"

// 写一个程序,对英问字符串进行逆序。
func ewreverse() string {
var aa = "hello world"
var bb []byte
bb = []byte(aa)
for i := ; i < len(aa)/; i++ {
tem := bb[len(aa)-i-]
bb[len(bb)-i-] = bb[i]
bb[i] = tem
} aa = string(bb)
return aa
} // 写一个程序,对包含中问的字符串进行逆序。 func zwreverse() string {
var aa = "hello 世界"
var bb []rune
bb = []rune(aa) for i := ; i < len(bb)/; i++ {
tem := bb[len(bb)-i-]
bb[len(bb)-i-] = bb[i]
bb[i] = tem
} aa = string(bb)
return aa
} //写一个程序,判断一个字符串是否是回文 (正序和倒序一样)
func testHuiwen() bool {
var aa = "上海自来水来自海上"
var bb []rune
bb = []rune(aa) for i := ; i < len(bb)/; i++ {
tem := bb[len(bb)-i-]
bb[len(bb)-i-] = bb[i]
bb[i] = tem
} cc := string(bb)
return cc == aa } func main() {
// aa := ewreverse()
// aa := zwreverse()
aa := testHuiwen()
fmt.Printf("aa=%t", aa) }

go 数据变量和操作符的更多相关文章

  1. CG中的数据变量类型

    CG 中的数据变量类型有三: float:高精度浮点值,通常是32位. half:中精度浮点值.通常是16位,范围是-60000至+60000,它适合存储UV坐标,颜色值等. fixed:低精度浮点值 ...

  2. 《Visual C# 从入门到精通》第一章使用变量、操作符和表达式——读书笔记

    前言: 这个笔记是我个人总结,主要是熟练自己查看<Visual C# 从入门到精通>(第8版)这本书时,懵然起总结的想法,只是总结一些知识点,在工作项目会用得上,但是对毫无C#语言基础的, ...

  3. SAS对数据变量的处理

    SAS对数据变量的处理 在使用DATA步基于已经存在的数据集生成新数据集时,可以指定在新数据集中不需要包含的变量而仅读取其他变量,或者指定仅需要在 新数据集中包含的变量.该功能可以通过DATA步中的S ...

  4. d3.js 之关联数据:data操作符

    数据可视化 在可视化工作中,一个基本出发点是将不同的数值映射到不同的可视化 元素的属性上,使其表现出各自不同的视觉特征. 比如:以数组中的每一个值为直径分别创建一个圆,我们得到三个圆: 在d3中,可视 ...

  5. JavaScript 语法——字面量,变量,操作符,语句,关键字,注释,函数,字符集

    JavaScript 是一个程序语言. 语法规则定义了语言结构. 它是一个轻量级,但功能强大的编程语言.   ㈠JavaScript 字面量 在编程语言中,一般固定值称为字面量,如 3.14. ⑴数字 ...

  6. 李洪强-C语言9-C语言的数据,变量和常量

    一.数据 图片文字等都是数据,在计算机中以0和1存储. (一)分类 数据分为静态数据和动态数据. ①. 静态数据:一些永久性的的数据,一般存储在硬盘中,只要硬盘没坏数据都是存在的.一般以文件的形式存储 ...

  7. Linux命令(十)——Shell程序设计一(变量与操作符)

    Shell是linux系统中用户和系统交互的接口,它除了作为命令解释器以外,还是一种高级程序设计语言.在前面介绍的linux命令中,Shell都作为命令解释器出现.下面分两节简单介绍脚本程序设计中的语 ...

  8. Java入门基础(变量、操作符与表达式)

    Java入门基础 1. 第一个程序 2.变量(命名.运算.整数/小数/字符串.布尔类型) 3.操作符与表达式(算术/逻辑/关系/赋值/自增/类型转换操作符) HelloWorld! public cl ...

  9. C#&java重学笔记(变量与操作符)

    声明:自用参看读物 C#部分 1.C#中的byte和sbyte并不是二进制的比特,而是无符号 和 有符号的 8位整数. 2.decimal和float double都用来表示小数,前者用e的10的几次 ...

随机推荐

  1. 第203天:js---Array对象常用方法

    1.shift:删除原数组的第一项,返回删除元素的值:如果数组为空则返回undefined //shift:删除原数组的第一项,返回删除元素的值:如果数组为空则返回undefined var arr ...

  2. java 父类的引用调用自己的属性 但是调用的方法必须是重写过的父类的方法 因为编译时候把他当作父类 运行时候才是他自己 所以必须重写父类得方法

  3. BZOJ 4034 树上操作(树的欧拉序列+线段树)

    刷个清新的数据结构题爽一爽? 题意: 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x ...

  4. bzoj1272 Gate Of Babylon(计数方法+Lucas定理+乘法逆元)

    Description Input Output Sample Input 2 1 10 13 3 Sample Output 12 Source 看到t很小,想到用容斥原理,推一下发现n种数中选m个 ...

  5. 【BZOJ4596】黑暗前的幻想乡(矩阵树定理,容斥)

    [BZOJ4596]黑暗前的幻想乡(矩阵树定理,容斥) 题面 BZOJ 有\(n\)个点,要求连出一棵生成树, 指定了一些边可以染成某种颜色,一共\(n-1\)种颜色, 求所有颜色都出现过的生成树方案 ...

  6. 【BZOJ2141】排队(CDQ分治)

    [BZOJ2141]排队(CDQ分治) 题面 题面以及树套树做法见这里 题解 大部分树套树/主席树这类题目都可以用整体二分/CDQ分治来做. 这题考虑一下,在不考虑修改的情况下 贡献是如何产生的? 我 ...

  7. 相同内容 yaml 与 json 格式对比

    关联数组: yaml person: name: 张三 age: 24 json { "person": { "name": "张三", . ...

  8. 配置:heartbeat+nginx+mysqld+drbd高可用笔记(OK)

    参考资料:http://www.centoscn.com/CentosServer/cluster/2015/0605/5604.html   背景需求: 使用heartbeat来做HA高可用,并且把 ...

  9. [DeeplearningAI笔记]序列模型2.1-2.2词嵌入word embedding

    5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1词汇表征 Word representation 原先都是使用词汇表来表示词汇,并且使用1-hot编码的方式来表示词汇 ...

  10. [DeeplearningAI笔记]卷积神经网络3.10候选区域region proposals与R-CNN

    4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.10 region proposals候选区域与R-CNN 基于滑动窗口的目标检测算法将原始图片分割成小的样本图片,并传入分 ...