SlideShare a Scribd company logo
How to avoid Go gotchas
by learning internals
Ivan Danyliuk, Codemotion Milano

26 Nov 2016
Gotchas
• Go has some gotchas
• Good examples:
• 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New
Golang Devs
• Go Traps
• Golang slice append gotcha
Gotchas
• Luckily, Go has very few gotchas
• Especially in comparison with other languages
Go
C++
0 75 150 225 300
Gotchas
• So, what is gotcha?
• “a gotcha is a valid construct in a system, program or
programming language that works as documented but is counter-
intuitive and almost invites mistakes because it is both easy to
invoke and unexpected or unreasonable in its outcome”
Gotchas
• Two solutions:
• “fix” the language
• fix the intuition.
• Let’s build some intuition to fight gotchas then.
Gotchas
• Let’s learn some internals and in memory representations
• It worked for me, should work for you as well.
basic types
Code:
i := 1234
j := int32(4)
i64 := int64(999)
f := float32(3.14)
Code:
i := 1234
j := int32(4)
i64 := int64(999)
f := float32(3.14)
1234
i
4
j
3.14
fi64
999
int int32
float32int64
basic types
structs
Code:
type Point struct {
X, Y int
}
p1 := Point{10, 20}
10
int
20
int
p1
Code:
type Point struct {
X, Y int
}
p1 := Point{10, 20}
p2 := &Point{10, 20}
10
int
20
int
p1
10
int
20
int
p2
0x..
*Point
basic types
structs
Code:
func Foo(p Point) {
// ...
}
p1 := Point{10, 20}
Foo(p1)
10
int
20
int
p1
10
int
20
int
Foo()
copy
structs
Code:
func Foo(p *Point) {
// ...
}
p2 := &Point{10, 20}
Foo(p2)
Foo()
copy
10
int
20
int
p2
0x..
*Point
0x..
array
var arr [5]int
Code:
array
var arr [5]int
Go code: src/runtime/malloc.go
// newarray allocates an array of n elements of type typ.
func newarray(typ *_type, n int) unsafe.Pointer {
if n < 0 || uintptr(n) > maxSliceCap(typ.size) {
panic(plainError("runtime: allocation size out of range"))
}
return mallocgc(typ.size*uintptr(n), typ, true)
}
Code:
array
var arr [5]int
Code:
int
Memory:
array
var arr [5]int
Code: 4 or 8 bytes blocks
(32 or 64 bit arch)
int
Memory:
array
var arr [5]int
Code:
int
0 1 2 3 4
Memory:
array
var arr [5]int
Code:
int
0 1 2 3 4
0 0 0 0 0
Memory:
array
Code:
Memory:
int
0 1 2 3 4
0 0 0 0 42
var arr [5]int
arr[4] = 42
slice
var foo []int
Code:
slice
var foo []int
Code:
Go code: src/runtime/slice.go
type slice struct {
array unsafe.Pointer
len int
cap int
}
slice
var foo []int
Code:
Go code: src/runtime/slice.go
array
len
cap
0 1 2 3 4
foo
type slice struct {
array unsafe.Pointer
len int
cap int
}
slice
Code:
array
len
cap
0 1 2 3 4
nil
0
0
var foo []int
foo
slice
var foo []int
foo = make([]int, 5)
Code:
array
len
cap
000 0 0
0x..
5
5
0 1 2 3 4
0 1 2 3 4
foo
slice
var foo []int
foo = make([]int, 3, 5)
Code:
array
len
cap
00 0
0x..
3
5
0 1 2 3 4
0 1 2 3 4
foo
slice
var foo []int
foo = make([]int, 5)
foo[3] = 42
foo[4] = 100
Code:
array
len
cap
4200 0 100
0 1 2 3 4
0x..
5
5
0 1 2 3 4
0 1 2 3 4
foo
slice
Code:
array
len
cap
0x..
5
5
var foo []int
foo = make([]int, 5)
foo[3] = 42
foo[4] = 100
bar := foo[1:4]
4200 0 100
0 1 2 3 40 1 2 3 4
0 1 2 3 4
foo
slice
Code:
array
len
cap
4200 0 100
0
1 2 3 4
0x..
5
5
0
1 2 3 4
0 1 2 3 4
var foo []int
foo = make([]int, 5)
foo[3] = 42
foo[4] = 100
bar := foo[1:4]
array
len
cap
bar
0x..
3
3
foo
slice
Code:
array
len
cap
42990 0 100
0
1 2 3 4
foo
0x..
5
5
0
1 2 3 4
0 1 2 3 4
var foo []int
foo = make([]int, 5)
foo[3] = 42
foo[4] = 100
bar := foo[1:4]
bar[1] = 99
array
len
cap
bar
0x..
3
3
0 1 2
slice
Code:
var digitRegexp = regexp.MustCompile("[0-9]+")
func FindDigits(filename string) []byte {
b, _ := ioutil.ReadFile(filename)
return digitRegexp.Find(b)
}
slice
array
len
cap
32r 1 $
0
b
0x..
10^6
0
array
len
cap
digitRegexp.Find
0x..
3
3
10^6
xa b c d …
10MB slice
append
Code:
a := make([]int, 32)
a = append(a, 1)
append
Code:
a := make([]int, 32)
a = append(a, 1)
fmt.Println("len:", len(b), "cap:", cap(b))
len: 33 cap: 64
Output:
append
array
len
cap
000 0 0
a
0x..
32
32
0 1 2 3 4
0 1 2 30 31
…
32 ints
a = append(a, 1)
array
len
cap
000 0 0
a
0x..
33
64
0 1 2 3 4
0 1 2 30 31
… 1
32 33 34
…
35 62 63
32 ints more
32 + 1
doubling 32
000 0 0
0 1 2 3 4
0 1 2 30 31
…
32 ints
append
array
len
cap
000 0 0
a
0x..
34
64
0 1 2 3 4
0 1 2 30 31
… 1 2
32 33 34
…
35 62 63
33 + 1 a = append(a, 2)
64 ints
interfaces
Code:
type error interface {
Error() string
}
interfaces
Code:
Go code: src/runtime/runtime2.go
type iface struct {
tab *itab
data unsafe.Pointer
}
type error interface {
Error() string
}
type iface struct {
tab *itab
data unsafe.Pointer
}
type error interface {
Error() string
}
interfaces
Code:
Go code: src/runtime/runtime2.go itab = interface table
type iface struct {
tab *itab
data unsafe.Pointer
}
type error interface {
Error() string
}
interfaces
Code:
Go code: src/runtime/runtime2.go
type itab struct {
inter *interfacetype
_type *_type
link *itab
bad int32
unused int32
fun [1]uintptr
}
interfaces
Code:
tab
data
type error interface {
Error() string
}
data
tab
nil
0x..
interfaces
Code:
inter
type
nil
error
fun
itab
…
type error interface {
Error() string
}
var err error
err
nil interface
interfaces
Code:
type error interface {
Error() string
}
func foo() error {
return nil
}
data
tab
nil
0x..
inter
type
nil
error
fun
itab
…
err
interfaces
Code:
data
tab
nil
0x..
inter
type
nil
error
fun
itab
…
err
func foo() error {
var err error
// err == nil
return err
}
err := foo()
if err != nil { // false
}
interfaces
func foo() error {
var err *os.PathError
// err == nil
return err
}
err := foo()
if err != nil { // ???
}
Code:
interfaces
func foo() error {
var err *os.PathError
// err == nil
return err
}
err := foo()
if err != nil { // true
}
Code:
interfaces
func foo() error {
var err *os.PathError
// err == nil
return err
}
err := foo()
if err != nil { // true
}
Code:
tab
0x..
inter
type
*os.Path
Error
error
fun
itab
…
err
data
os.PathError
err
nil
0x..
tab
interfaces
func foo() error {
err := &os.PathError{
"open", name, e
}
return err
}
err := foo()
if err != nil { // true
}
Code:
data
0x..
0x..
inter
type
*os.Path
Error
error
fun
itab
…
err
os.PathError
err
“open”
…
interfaces
func foo() error {
var err *os.PathError
// err == nil
return err
}
func foo() error {
var err error
// err == nil
return err
}
data
tab
nil
0x..
inter
type
nil
error
fun
itab
…
err
data
tab
0x..
inter
type
*os.Path
Error
error
fun
itab
…
err
0x..
os.PathError
nil
err
interfaces
tab
0x..
inter
type
*os.Path
Error
error
fun
itab
…
err
data
os.PathError
err
nil
0x..
data
tab
nil
0x..
inter
type
nil
error
fun
itab
…
err
!=
type eface struct {
_type *_type
data unsafe.Pointer
}
type empty interface{}
interfaces
Code:
Go code: src/runtime/runtime2.go
_type
data
interfaces
int64
0x..
int64
42
empty
foo
var foo int64 = 42
func bar() interface{} {
return foo
}
Code:
interfaces
func bar() interface{} {
return int64(42)
}
Code:
interfaces
func bar() []interface{} {
return []int64{1,2,3,4}
}
Code:
interfaces
func bar() []interface{} {
return []int64{1,2,3,4}
}
Code:
$ go build
cannot use []int literal (type []int) as type
[]interface {} in return argument
array
len
cap
[]int
0x..
32
32
4
3131 2 32
0 1 2 3
0 1 2 30 31
…
32 ints
array
len
cap
0x..
32
32
0
…
32 interfaces{}[]interface{}
int
0x..
int
1
empty
data
int
0x..
int
2
empty
data
int
0x..
int
3
empty
data
0
int
0x..
int
31
empty
data
int
0x..
int
32
empty
data
If you want to do something
expensive - do it explicitly
Links
https://divan.github.io/posts/avoid_gotchas/
Links
• Must read:
• Go Data Structures
• Go Data Structures:
Interfaces
• Go Slices: usage and
internals
• Gopher Puzzlers
• And, of course:
• Go source code
• Effective Go
• Go spec
Thank you
@idanyliuk

More Related Content

What's hot (20)

PDF
AmI 2015 - Python basics
Luigi De Russis
 
PPTX
C++17 std::filesystem - Overview
Bartlomiej Filipek
 
PPTX
Vocabulary Types in C++17
Bartlomiej Filipek
 
PPTX
Python basics
NexThoughts Technologies
 
PDF
4Developers 2018: Type hints w języku Python - innowierstwo czy zbawienie? (K...
PROIDEA
 
PDF
Python in 90 minutes
Bardia Heydari
 
PPT
OOP v3
Sunil OS
 
ODP
Python quickstart for programmers: Python Kung Fu
climatewarrior
 
PDF
Python Cheat Sheet
Muthu Vinayagam
 
PPTX
Python Workshop - Learn Python the Hard Way
Utkarsh Sengar
 
PPTX
Cs1123 11 pointers
TAlha MAlik
 
PPTX
Testing in Python: doctest and unittest
Fariz Darari
 
PPTX
Testing in Python: doctest and unittest (Updated)
Fariz Darari
 
PPTX
Format String
Wei-Bo Chen
 
PDF
Introduction to advanced python
Charles-Axel Dein
 
PDF
Денис Лебедев, Swift
Yandex
 
PDF
The Swift Compiler and Standard Library
Santosh Rajan
 
PPTX
Golang iran - tutorial go programming language - Preliminary
go-lang
 
PDF
Learn Python 3 for absolute beginners
KingsleyAmankwa
 
PDF
AmI 2016 - Python basics
Luigi De Russis
 
AmI 2015 - Python basics
Luigi De Russis
 
C++17 std::filesystem - Overview
Bartlomiej Filipek
 
Vocabulary Types in C++17
Bartlomiej Filipek
 
4Developers 2018: Type hints w języku Python - innowierstwo czy zbawienie? (K...
PROIDEA
 
Python in 90 minutes
Bardia Heydari
 
OOP v3
Sunil OS
 
Python quickstart for programmers: Python Kung Fu
climatewarrior
 
Python Cheat Sheet
Muthu Vinayagam
 
Python Workshop - Learn Python the Hard Way
Utkarsh Sengar
 
Cs1123 11 pointers
TAlha MAlik
 
Testing in Python: doctest and unittest
Fariz Darari
 
Testing in Python: doctest and unittest (Updated)
Fariz Darari
 
Format String
Wei-Bo Chen
 
Introduction to advanced python
Charles-Axel Dein
 
Денис Лебедев, Swift
Yandex
 
The Swift Compiler and Standard Library
Santosh Rajan
 
Golang iran - tutorial go programming language - Preliminary
go-lang
 
Learn Python 3 for absolute beginners
KingsleyAmankwa
 
AmI 2016 - Python basics
Luigi De Russis
 

Viewers also liked (20)

PDF
Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016
Codemotion
 
PDF
Come rendere il proprio prodotto una bomba creandogli una intera community in...
Codemotion
 
PDF
Lo sviluppo di Edge Guardian VR - Maurizio Tatafiore - Codemotion Milan 2016
Codemotion
 
PDF
How To Structure Go Applications - Paul Bellamy - Codemotion Milan 2016
Codemotion
 
PDF
Developing apps for developing countries - Natalie Pistunovich - Codemotion M...
Codemotion
 
PDF
Getting started with go - Florin Patan - Codemotion Milan 2016
Codemotion
 
PPTX
Master the chaos: from raw data to analytics - Andrea Pompili, Riccardo Rossi...
Codemotion
 
PDF
Cyber Analysts: who they are, what they do, where they are - Marco Ramilli - ...
Codemotion
 
PPTX
DevOps in Cloud, dai Container all'approccio Codeless - Gabriele Provinciali,...
Codemotion
 
PDF
A-Frame in the Virtual World, small bricks of virtual reality web - Giovanni ...
Codemotion
 
PDF
Progressive Web Apps: trick or real magic? - Maurizio Mangione - Codemotion M...
Codemotion
 
PDF
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016
Codemotion
 
PDF
The (almost) lost art of Smalltalk - Nikolas Martens - Codemotion Milan 2016
Codemotion
 
PDF
Hacking for Salone: Drone Races - Di Saverio; Lippolis - Codemotion Milan 2016
Codemotion
 
PDF
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Codemotion
 
PDF
Lo sviluppo di Edge Guardian VR - Marco Giammetti - Codemotion Milan 2016
Codemotion
 
PDF
Games of Simplicity - Pozzi; Molinari - Codemotion Milan 2016
Codemotion
 
PDF
The Evolution of Asynchronous Javascript - Alessandro Cinelli - Codemotion Mi...
Codemotion
 
PDF
The hitchhiker's guide to UXing without a UXer - Chrissy Welsh - Codemotion M...
Codemotion
 
PDF
Codemotion rome 2015 bluemix lab tutorial -- Codemotion Rome 2015
Codemotion
 
Milano Chatbots Meetup - Vittorio Banfi - Bot Design - Codemotion Milan 2016
Codemotion
 
Come rendere il proprio prodotto una bomba creandogli una intera community in...
Codemotion
 
Lo sviluppo di Edge Guardian VR - Maurizio Tatafiore - Codemotion Milan 2016
Codemotion
 
How To Structure Go Applications - Paul Bellamy - Codemotion Milan 2016
Codemotion
 
Developing apps for developing countries - Natalie Pistunovich - Codemotion M...
Codemotion
 
Getting started with go - Florin Patan - Codemotion Milan 2016
Codemotion
 
Master the chaos: from raw data to analytics - Andrea Pompili, Riccardo Rossi...
Codemotion
 
Cyber Analysts: who they are, what they do, where they are - Marco Ramilli - ...
Codemotion
 
DevOps in Cloud, dai Container all'approccio Codeless - Gabriele Provinciali,...
Codemotion
 
A-Frame in the Virtual World, small bricks of virtual reality web - Giovanni ...
Codemotion
 
Progressive Web Apps: trick or real magic? - Maurizio Mangione - Codemotion M...
Codemotion
 
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016
Codemotion
 
The (almost) lost art of Smalltalk - Nikolas Martens - Codemotion Milan 2016
Codemotion
 
Hacking for Salone: Drone Races - Di Saverio; Lippolis - Codemotion Milan 2016
Codemotion
 
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Codemotion
 
Lo sviluppo di Edge Guardian VR - Marco Giammetti - Codemotion Milan 2016
Codemotion
 
Games of Simplicity - Pozzi; Molinari - Codemotion Milan 2016
Codemotion
 
The Evolution of Asynchronous Javascript - Alessandro Cinelli - Codemotion Mi...
Codemotion
 
The hitchhiker's guide to UXing without a UXer - Chrissy Welsh - Codemotion M...
Codemotion
 
Codemotion rome 2015 bluemix lab tutorial -- Codemotion Rome 2015
Codemotion
 
Ad

Similar to How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016 (20)

PDF
Go Says WAT?
jonbodner
 
PDF
Go: It's Not Just For Google
Eleanor McHugh
 
PDF
Gunosy.go#7 reflect
Taku Fukushima
 
PDF
Go Lang Tutorial
Wei-Ning Huang
 
PDF
Go a crash course
Eleanor McHugh
 
PDF
golang_refcard.pdf
Spam92
 
PDF
7 Common mistakes in Go and when to avoid them
Steven Francia
 
PDF
GoLightly - a customisable virtual machine written in Go
Eleanor McHugh
 
PPTX
Go Programming Language (Golang)
Ishin Vin
 
PDF
Types - slice, map, new, make, struct - Gopherlabs
sangam biradar
 
PDF
Implementing Software Machines in C and Go
Eleanor McHugh
 
PDF
Something about Golang
Anton Arhipov
 
PPTX
golang_getting_started.pptx
Guy Komari
 
PDF
10〜30分で何となく分かるGo
Moriyoshi Koizumi
 
KEY
GoLightly: Building VM-Based Language Runtimes with Google Go
Eleanor McHugh
 
PDF
7 Common Mistakes in Go (2015)
Steven Francia
 
PDF
Go courseday2
Zoom Quiet
 
PDF
Go Java, Go!
Andres Almiray
 
PDF
RubyConf Portugal 2014 - Why ruby must go!
Gautam Rege
 
PDF
Go ahead, make my day
Tor Ivry
 
Go Says WAT?
jonbodner
 
Go: It's Not Just For Google
Eleanor McHugh
 
Gunosy.go#7 reflect
Taku Fukushima
 
Go Lang Tutorial
Wei-Ning Huang
 
Go a crash course
Eleanor McHugh
 
golang_refcard.pdf
Spam92
 
7 Common mistakes in Go and when to avoid them
Steven Francia
 
GoLightly - a customisable virtual machine written in Go
Eleanor McHugh
 
Go Programming Language (Golang)
Ishin Vin
 
Types - slice, map, new, make, struct - Gopherlabs
sangam biradar
 
Implementing Software Machines in C and Go
Eleanor McHugh
 
Something about Golang
Anton Arhipov
 
golang_getting_started.pptx
Guy Komari
 
10〜30分で何となく分かるGo
Moriyoshi Koizumi
 
GoLightly: Building VM-Based Language Runtimes with Google Go
Eleanor McHugh
 
7 Common Mistakes in Go (2015)
Steven Francia
 
Go courseday2
Zoom Quiet
 
Go Java, Go!
Andres Almiray
 
RubyConf Portugal 2014 - Why ruby must go!
Gautam Rege
 
Go ahead, make my day
Tor Ivry
 
Ad

More from Codemotion (20)

PDF
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Codemotion
 
PDF
Pompili - From hero to_zero: The FatalNoise neverending story
Codemotion
 
PPTX
Pastore - Commodore 65 - La storia
Codemotion
 
PPTX
Pennisi - Essere Richard Altwasser
Codemotion
 
PPTX
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Codemotion
 
PPTX
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Codemotion
 
PPTX
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Codemotion
 
PPTX
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Codemotion
 
PDF
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Codemotion
 
PDF
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Codemotion
 
PDF
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Codemotion
 
PDF
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Codemotion
 
PDF
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Codemotion
 
PDF
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Codemotion
 
PPTX
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Codemotion
 
PPTX
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Codemotion
 
PDF
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Codemotion
 
PDF
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Codemotion
 
PDF
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Codemotion
 
PDF
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Codemotion
 
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Codemotion
 
Pastore - Commodore 65 - La storia
Codemotion
 
Pennisi - Essere Richard Altwasser
Codemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Codemotion
 

Recently uploaded (20)

PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PPTX
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PPTX
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
AVL ( audio, visuals or led ), technology.
Rajeshwri Panchal
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
The Future of Artificial Intelligence (AI)
Mukul
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 

How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016