当前位置:网站首页>Golang Pen & interview 01
Golang Pen & interview 01
2022-04-23 11:26:00 【Runscript. Sh】
Juste quelques questions simples pour l'examen écrit.,Ou peut - être qu'ils l'ont montré directement à l'entrevue..
1, Avec différentsgoroutineÀ l'opération.mapIl y a un problème de synchronisation des threads,Prends ça.mapRemplacer parint ,C'est le même problème..IngoC'est ça..
2,La valeur de sortie du code suivant est:
func t(){
jsonStr:=[]byte(`{"age":1}`)
var value map[string]interface{
}
json.Unmarshal(jsonStr,&value)
age:=value["age"]
fmt.Println(reflect.TypeOf(age))
//float64
}
La différence:
func t() {
jsonStr := []byte(`{"age":1}`)
var value map[string]int
json.Unmarshal(jsonStr, &value)
age := value["age"]
fmt.Println(reflect.TypeOf(age))
//int
}
3,Y a - t - il un problème avec le Code inférieur?,Quel est le problème?
import (
"sync"
"fmt"
)
type UserAges struct {
ages map[string] int
sync.Mutex
}
func (u *UserAges)Add(name string,age int) {
u.Lock()
defer u.Unlock()
u.ages[name] = age
}
func (u *UserAges)Get(name string)int{
if age,ok:=u.ages[name];ok{
return age
}
return -1
}
Le problème, c'est que,ages Pas de sac exposé à l'extérieur du dos , Fait en sorte que l'appelant ne puisse pas initialiser ages.
Et puis en appelantaddFonction,Il y aura une erreur. Examiner la question de la portée de la fonction .
4, Quel est le résultat de sortie du Code inférieur ?
func TestArrayAndSlice(){
s1:=[]int{
1,2,3}
s2:=s1[1:]
for i:=range s2{
s2[i]+=10
}
fmt.Println(s2)
s2=append(s2, 4)
for i:=range s2{
s2[i]+=10
}
fmt.Println(s2)
}
Les résultats sont les suivants:: C'est pour examiner les tableaux et les tranches s2Interceptions1 En dessous de 1Et après; Puis faites l'opération .
[12 13]
[22 23 14]
5, Qu'est - ce que la sortie de code ci - dessous
func TestDoit(){
doit:= func(arg int) interface{
}{
var result *struct{
}=nil
if (arg>0) {
result = &struct{
}{
}
}
return result
}
//Résultats obtenus.
//-1:result: <nil> Structure anonyme vide
//1://result: &{} L'adresse de la structure anonyme
if res:=doit(1);res!=nil{
fmt.Println("result:",res)
}
}
output:
result: &{
}
6, Quel est le résultat de sortie du Code inférieur
//Mettez - le surmainÀ l'intérieur.
// Spécifie qu'un seul processeur logique peut être utilisé , Pour faciliter la visualisation de l'ordre de répartition .
func t2(){
runtime.GOMAXPROCS(1)
wg:=sync.WaitGroup{
}
wg.Add(20)
//step 1
for i:=0;i<10 ;i++ {
go func() {
fmt.Println("i",i)
wg.Done()
}()
}
fmt.Println("--------------------")
//step 2
for j:=0;j<10 ;j++ {
go func(j int) {
fmt.Println("j",j)
wg.Done()
}(j)
}
wg.Wait()
}
output:
--------------------
j 9
i 10
i 10
i 10
i 10
i 10
i 10
i 10
i 10
i 10
i 10
j 0
j 1
j 2
j 3
j 4
j 5
j 6
j 7
j 8
Attention à ça,Le premierfor Il n'y a pas de paramètre passé , Le deuxième paramètre passe .
Donc le premierforÇa a commencégoroutine- Oui.i En fait, c'est dans le fil principal i;
La raison pour laquelle 10,( Peut - être quelques - uns avant <10); C'est parce que l'appel iQuand,i A été ajouté au fil principal 10C'est.
Et le secondforÀ l'intérieur.i Est passé par paramètre ,Donc ça imprime0~9;
版权声明
本文为[Runscript. Sh]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231126068630.html
边栏推荐
- Usage of rename in cygwin
- Laravel增加自定义助手函数
- Learning go language 0x01: start from the official website
- 解析社交性机器人对基础科学的作用
- 解读机器人编程课程的生物认知度
- Mysql中有关Datetime和Timestamp的使用总结
- Learning go language 0x08: practice using error in go language journey
- nacos基础(6):nacos配置管理模型
- Learn go language 0x07: stringer exercise code in go language journey
- MySQL索引优化之分页探索详细介绍
猜你喜欢

系统编程之高级文件IO(十三)——IO多路复用-select

GPU, CUDA,cuDNN三者的關系總結

Canvas详解

解析幼儿教育中steam教育的融合

Maker education for primary and middle school students to learn in happiness

After the MySQL router is reinstalled, it reconnects to the cluster for boot - a problem that has been configured in this host before

C#的学习笔记【八】SQL【一】

Laravel增加自定义助手函数

Interpreting the art created by robots

Laravel绑定钉钉群警报(php)
随机推荐
Detailed explanation of integer data type tinyint in MySQL
Learn go language 0x04: Code of exercises sliced in go language journey
创客教育中的统筹方案管理模式
年度最尴尬的社死瞬间,是Siri给的
实践数据湖iceberg 第三十课 mysql->iceberg,不同客户端有时区问题
R-Drop:更强大的Dropout正则方法
Upgrade the functions available for cpolar intranet penetration
Interpretation of biological recognition in robot programming course
分享两个实用的shell脚本
Detailed explanation of writing sequence and execution sequence of MySQL series SQL query statements
博客文章导航(实时更新)
解析性能良好的机器人使用守则
AcWing 1874. 哞加密(枚举,哈希)
After the MySQL router is reinstalled, it reconnects to the cluster for boot - a problem that has been configured in this host before
PDMS软光刻加工过程
零钱兑换II——【LeetCode】
Write console script by laravel
MIT: label every pixel in the world with unsupervised! Humans: no more 800 hours for an hour of video
VM set up static virtual machine
2022爱分析· 工业互联网厂商全景报告