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 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
随机推荐
- Spring Batch 专题
如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理.针对OLTP,业界有大量的开源框架.优秀的架 ...
- react,react native,webpack,ES6,node.js----------今天上午学了一下node.js
http://www.yiibai.com/nodejs/node_install.html---node.js具体入门资料在此 Node JS事件循环 Node JS是单线程应用程序,但它通过事件和 ...
- golang 并发模式笔记
1.并发并不是并行,前者是优先对时间片的抢占,后者是真多核. go中多线程时直接要求并行的方法是: 亦不可滥用,CPU密集型,并发度很高的场景适用. 2.go起的协程 3. function that ...
- Django文件上传(经典上传方式)
经典文件上传方式 创建URL from django.contrib import admin from django.urls import path from django.conf.urls i ...
- 死磕 java集合之SynchronousQueue源码分析
问题 (1)SynchronousQueue的实现方式? (2)SynchronousQueue真的是无缓冲的吗? (3)SynchronousQueue在高并发情景下会有什么问题? 简介 Synch ...
- Java语言编程 - 搭建Java开发环境
2.1 JDK.JRE和JVM关系 要弄清楚JDK.JRE和JVM这三者之间的关系,先看如下图,有个感性的认识: JDK:Java Development ToolKit(Java开发工具包).JDK ...
- 性能超前,详解腾讯云新一代Redis缓存数据库
背景 当前内存数据库发展迅速,用户对于存储系统的要求也越来越高,为了满足各类业务场景的需要,腾讯云设计了新一代的内存数据库,不但保留了原来系统的高性能,高可用等特性,同时还兼容了当前流行的Redis原 ...
- 网络协议 终章 - GTP 协议:复杂的移动网络
前面都是讲电脑上网的情景,今天我们就来认识下使用最多的移动网络上网场景. 移动网络的发展历程 你一定知道手机上网有 2G.3G.4G 的说法,究竟这都是什么意思呢?有一个通俗的说法就是 ...
- 使用Keepalived构建LVS高可用集群
LVS的DR模型配置+Keepalive部署 介绍 下图为DR模型的通信过程,图中的IP不要被扑结构中的IP迷惑,图里只是为了说明DR的通信原理,应用到本例中的拓扑上其工作原理不变. 拓扑结构 服务器 ...
- MyISAM加锁分析
为什么加锁 你正在读着你喜欢的女孩递给你的信,看到一半的时候,她的好闺蜜过来瞄了一眼(假设她会隐身术,你看不到她),她想把"我很喜欢你"改成"我不喜欢你",刚把 ...