Skip to content

Instantly share code, notes, and snippets.

View J7mbo's full-sized avatar
🔨
Working with distributed systems

James Mallison J7mbo

🔨
Working with distributed systems
View GitHub Profile
@J7mbo
J7mbo / golang-constructors-blog-16.go
Created February 22, 2019 12:14
golang-constructors-blog-16
package Package3
myStruct := Package1.NewMyStruct()
consumer := Package2.NewConsumer()
consumer.DoSomething(myStruct)
@J7mbo
J7mbo / golang-constructors-blog-15.go
Created February 22, 2019 12:14
golang-constructors-blog-15
type consumer struct { }
func NewConsumer() *consumer {
return &consumer{}
}
func (*consumer) DoSomething(obj interfaceToConsume) {
/* We can actually pass in a Package1.myStruct here! */
}
@J7mbo
J7mbo / golang-constructors-blog-14.go
Created February 22, 2019 12:14
golang-constructors-blog-14
package Package2
/* Implicit interface time! */
type interfaceToConsume interface {
SomeFunc() int
}
@J7mbo
J7mbo / golang-constructors-blog-13.go
Created February 22, 2019 12:13
golang-constructors-blog-13
package Package1
type myStruct struct { }
func (*myStruct) SomeFunc() int { return 42 }
func (*myStruct) SomeOtherFunc() string { return "42" }
/* Factory */
func NewMyStruct() *myStruct {
return &myStruct{}
@J7mbo
J7mbo / golang-constructors-blog-12.go
Created February 22, 2019 12:12
golang-constructors-blog-12
type MyInterface interface {
MethodMustBeImplemented()
}
type MyStruct struct { }
func (*MyStruct) MethodMustBeImplemented() { } // Implicit
@J7mbo
J7mbo / golang-constructors-blog-11.php
Created February 22, 2019 12:12
golang-constructors-blog-11
interface MyInterface { }
class MyClass implements MyInterface { } // Explicit
@J7mbo
J7mbo / golang-constructors-blog-10.go
Created February 22, 2019 12:11
golang-constructors-blog-10.go
func (s MyStruct) StructFunc() {
if s.child == (ChildStruct{}) {
return
}
fmt.Println(s.child.num)
}
@J7mbo
J7mbo / golang-constructors-blog-9.go
Created February 22, 2019 12:10
golang-constructors-blog-9
type MyStruct struct {
/* Note how s.child is not a pointer any more */
child ChildStruct
}
func (s *MyStruct) StructFunc() {
if s.child != nil {
fmt.Println(s.child.num)
}
}
@J7mbo
J7mbo / golang-constructors-blog-8.go
Created February 22, 2019 12:09
golang-constructors-blog-8
type MyStruct struct {
child *ChildStruct
}
func (s *MyStruct) StructFunc() {
if s.child != nil {
fmt.Println(s.child.num)
}
}
@J7mbo
J7mbo / golang-constructors-blog-7.go
Created February 22, 2019 12:09
golang-constructors-blog-7
type MyStruct struct {
child *ChildStruct
}
func (s MyStruct) StructFunc() {
/* Here's where things go wrong */
fmt.Println(s.child.num)
}
type ChildStruct struct {