Go基础(1)
demo1:
package add var Name string = "hello world"
var Age int = 10
package main import (
"DEMO/test/day2/example2/add"
"fmt"
) func main() { fmt.Println("Name:", add.Name)
fmt.Println("Age:", add.Age) }
分析:
1.调包,需要写GOPATH目录下src目录之后的路径
比如我电脑的GOPATH:D:\PROJECT\GO_PROJECT
我的add包目录:D:\PROJECT\GO_PROJECT\src\DEMO\test\day2\example2\add
2.一个文件夹里面只能有一个包,最好同名
3.main函数必须在main包中
4.private变量小写首字母,public变量大写首字母即可
demo2:
package add var Name string = "test"
var Age int = 666 func init() {
Name = "Hello World!"
Age = 10
}
package main import (
a "DEMO/test/day2/example3/add"
"fmt"
) func main() { fmt.Println("Name:", a.Name)
fmt.Println("Age:", a.Age) }
分析:
1.导入的包可以取别名,比如我这里的a
2.init函数在初始赋值后执行,所以这里应该输出的是helloworld和10
demo3:
package main import (
"fmt"
) func modify(a int) {
a = 10
return
} func modity(a *int) {
*a = 10
return
} func main() {
a := 5
b := make(chan int, 1)
fmt.Println("a =", a)
fmt.Println("b =", b)
modify(a)
fmt.Println("a =", a)
modity(&a)
fmt.Println("a =", a)
}
分析:
1.依次输出:a = 5,b = 0xc0000160e0,a = 5,a = 10
2.理解修改地址和修改引用的区别
demo4:
package main
import "fmt"
func swap(a *int, b *int) {
temp := *a
*a = *b
*b = temp
return
}
func go_swap(a int, b int) (int, int) {
return b, a
}
func main() {
three := 3
four := 4
swap(&three, &four)
fmt.Println("---Swap---")
fmt.Println("three =", three)
fmt.Println("four =", four)
three, four = go_swap(three, four)
fmt.Println("---Swap---")
fmt.Println("three =", three)
fmt.Println("four =", four)
}
分析:
1.两种交换都是正确的
2.理解传统c语言交换函数以及多返回值形式的交换函数
demo5:
package main import (
"fmt"
"math/rand"
"time"
) func init() {
rand.Seed(time.Now().UnixNano())
} func main() {
fmt.Println("---Generate Random Number---")
fmt.Println("--Int---")
for i := 0; i < 3; i++ {
a := rand.Int()
fmt.Println(a)
}
fmt.Println("---Int(100)---")
for i := 0; i < 3; i++ {
a := rand.Intn(100)
fmt.Println(a)
}
fmt.Println("---Float32---")
for i := 0; i < 3; i++ {
a := rand.Float32()
fmt.Println(a)
}
}
分析:
1.简单的随机数生产程序,学会rand和time的基本使用
2.根据当前的精确时间给rand一个种子,保证随机的不确定性
demo6:
package main
import "fmt"
func reverse1(str string) string {
var result string
strLen := len(str)
for i := 0; i < strLen; i++ {
result += fmt.Sprintf("%c", str[strLen-i-1])
}
return result
}
func reverse2(str string) string {
var result []byte
tmp := []byte(str)
lenth := len(str)
for i := 0; i < lenth; i++ {
result = append(result, tmp[lenth-i-1])
}
return string(result)
}
func main() {
str := "hello world!"
result := reverse2(str)
fmt.Printf("str:%s\nresult:%s\n", str, result)
}
分析:
1.反转字符串的两种形式
demo7:
package main import (
"fmt"
"math"
) func main() {
min := 1
max := 100
for i := min; i <= max; i++ {
var flag bool = true
if i == 1 {
flag = false
}
for j := 2; j <= int(math.Sqrt(float64(i))); j++ {
if i%j == 0 {
flag = false
break
}
}
if flag {
fmt.Printf("%d是素数\n", i)
}
}
}
分析:
1.求1-100的所有质数
2.注意求指数过程优化,除数最大达到根号被除数即可
demo8:
package main import (
"fmt"
"strconv"
) func main() {
min := 1
max := 1000
for i := min; i <= max; i++ {
if isNarcissisticNumber(i) {
fmt.Printf("%d是水仙花数\n", i)
}
}
} func isNarcissisticNumber(n int) bool {
tmp := strconv.Itoa(n)
data := []byte(tmp)
lenth := len(data)
var result int = 0
for i := 0; i < lenth; i++ {
number, _ := strconv.Atoi(string(data[i]))
result += number * number * number
}
if n == result {
return true
} else {
return false
}
}
分析:
1.求水仙花数的一种实现
2.这里的Atoi是多返回值函数,用不到的返回值用“_”代替即可
3.这里是字符串处理的方式实现,还可以用除10的数学方式实现
demo9:
package main
import "fmt"
func main() {
fmt.Println(factorial(5))
}
func factorial(n uint) uint {
if n == 0 {
return 1
}
if n == 1 {
return n
}
return n * factorial(n-1)
}
分析:
1.利用递归实现阶乘,是比较优秀的实现方式
Go基础(1)的更多相关文章
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- HTTPS 互联网世界的安全基础
近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- .NET基础拾遗(5)多线程开发基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
随机推荐
- Reactor模式的.net版本简单实现--DEMO
近期在学习DotNetty,遇到不少的问题.由于dotnetty是次netty的.net版本的实现.导致在网上叙述dotnetty的原理,以及实现技巧方面的东西较少,这还是十分恼人的.在此建议学习和使 ...
- hibulder中使用git教程
https://jingyan.baidu.com/article/25648fc19c14839191fd0027.html
- JavaScript单线程和异步机制
随着对JavaScript学习的深入和实践经验的积累,一些原理和底层的东西也开始逐渐了解.早先也看过一些关于js单线程和事件循环的文章,不过当时看的似懂非懂,只留了一个大概的印象:浏览器中的js程序时 ...
- jQuery学习之旅 Item9 动画效果
1.元素的显示和隐藏 display:none; 隐藏 display:block; 显示 简单显示和隐藏方法 a) show() 显示 b) hide() 隐藏 c) toggle() 开关,显示则 ...
- CSS布局-圣杯布局
圣杯布局 圣杯布局很完美(兼容所有浏览器,包括IE6),但是使用了相对定位,布局有局限性,宽度控制要改的地方也多. 第一种方法公用部分: .lgyz, .lzrg, .lrzcg, .lcgrz, . ...
- BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割
BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作 ...
- BZOJ3613: [Heoi2014]南园满地堆轻絮
分析: 构造数据时间有些长,可以用秦九韶优化一下. 二分答案+贪心,即:另每一个b[i]尽可能的小的同时满足题意,在枚举过程中,判断是否存在一个b[i-1]>a[i]+x 如果存在,那么向右找 ...
- Java基础系列--基础排序算法
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9082138.html 一.概述 基础排序算法包括:桶排序.冒泡排序.选择排序.插入排序等 ...
- 服务部署到Swarm Cluster中
对于已存在的镜像,将其部署到服务器中并开始对外服务,便是它的职责,而我们要做的便是帮助它完成职责,前两个应用环节都已产生了相应的镜像,在这一环节,将完成服务部署到容器集群的工作,对于这一过程,实际执行 ...
- Protocol Buffers(2):编码与解码
目录 Message Structure 解码代码一窥 varint Protobuf中的整数和浮点数 Length-delimited相关类型 小结 参考 博客:blog.shinelee.me | ...