Showing posts with label GOLANG. Show all posts
Showing posts with label GOLANG. Show all posts

Sunday, December 9, 2018

Pointer Golang

pointer golang

Pointer Golang

Pointer pada Pemrograman GO digunakan ketika kita memanggil fungsi dan digunakan untuk mengambil nilai atau argumen, argumen itu kemudian disalin ke fungsi, untuk contoh silakan ikuti coding berikut :
package main
import (
"fmt"
)
func zero(x int) { 
x = 0 } 
func main() {
x := 5 
zero(x) 
fmt.Println(x) // x akan tetap 5 
}

pointer golang
hasil coding



Dalam program diatas fungsi zero tidak akan mengubah variabel x asli di fungsi utama. Tetapi bagaimana jika kita menginginkannya untuk merubah nilai tersebut? Salah satu cara untuk melakukannya adalah dengan menggunakan tipe data khusus yang dikenal sebagai pointer pada coding menjadi 'Ptr', seperti coding berikut ini :

package main
import (
"fmt"
)
func zero(xPtr *int) { 
*xPtr = 0 

func main() { 
x := 5 
zero(&x) 
fmt.Println(x) // x menjadi 0 
}

pointer golang
hasil coding


Pointer akan mengambil nilai pada lokasi memori tempat nilai disimpan, dan mengecualikan tempat nilai itu sendiri.  Dengan menggunakan pointer (* int) fungsi zero dapat memodifikasi variabel asli dari nilai 5 menjadi 0.

Operator * dan &

Dalam Go, pointer diwakili dengan menggunakan karakter * (tanda bintang) diikuti oleh type nilai yang disimpan. Dalam fungsi nol xPtr adalah pointer ke int.

* Juga digunakan untuk variabel penunjuk “dereference”. Dereferencingkan pointer memberi kita akses ke nilai yang ditunjukkan oleh pointer. Ketika kita menulis * xPtr = 0 kita seperti memperintahkan "simpan int 0 di lokasi memori xPtr". Jika kita hanya menulis xPtr = 0 sebagai gantinya kita akan mendapatkan kesalahan kompilator karena xPtr tidak akan dianggap sebagai integer.

Kita menggunakan operator & untuk mencari alamat variabel. &x mengembalikan * int (pointer ke int) karena x adalah int. Ini membuat kita memungkinkan untuk memodifikasi variabel asli. &x di fungsi main dan xPtr di nol merujuk ke lokasi memori yang sama.

New

Cara lain untuk mendapatkan pointer adalah dengan menggunakan fungsi New bawaan, seperti coding berikut :

package main
import (
"fmt"
)
func one(xPtr *int) { 
*xPtr = 1 } 
func main() { 
xPtr := new(int) 
one(xPtr) 
fmt.Println(*xPtr) // x adalah 1 
}

pointer golang
hasil coding


New mengambil tipe sebagai argumen, mengalokasikan cukup memori agar sesuai dengan type pada nilai itu dan mengembalikan pointer.

Dalam beberapa bahasa pemrograman ada perbedaan yang signifikan antara penggunaan New dan &.

Pointer jarang digunakan dengan tipe bawaan pada pemrograman Go, tetapi yang akan kita lihat di materi selanjutnya, Pointer sangat berguna ketika dipasangkan dengan struct.



MATERI GOLANG

Jika kamu baru di pembelajaran golang, silakan untuk belajar dari materi pertama 


Reviewer: FajarYusuf.Com
ItemReviewed: Pointer Golang

Thursday, December 6, 2018

Tunda, Panik & Pulihkan Golang

tunda panik pulihkan

Tunda, Panik & Pulihkan

Go memiliki pernyataan khusus yang disebut penundaan yang menjadwalkan panggilan fungsi untuk dijalankan setelah fungsi selesai. Perhatikan dan silakan ikuti contoh coding berikut:

package main 
import "fmt" 
func first() { 
fmt.Println("1st") } 
func second() { 
fmt.Println("2nd") } 
func main() { 
defer second() 
first()
}

Tunda, Panik & Pulihkan Golang
hasil coding


Program ini mencetak 1st diikuti oleh 2nd. Pada dasarnya menunda memindahkan panggilan kedua ke akhir fungsi, untuk sebaliknya silakan lihat contoh coding dibawah:
func main () {
second ()
first () }
tunda panik pulihkan golang
hasil coding


menunda sering digunakan ketika sumber daya harus dibebaskan dalam beberapa cara tertentu. Misalnya ketika kita membuka file, kita perlu memastikan untuk menutupnya nanti. Dengan penundaan seperti ini :
f, _: = os.Open (filename) tunda f.Close ()
Cara ini memiliki 3 keuntungan: 
  1. itu membuat panggilan close dekat dengan panggilan open, sehingga lebih mudah untuk dipahami, 
  2. jika fungsi memiliki beberapa pernyataan kembali (mungkin satu dalam if dan satu di lain) close akan terjadi sebelum keduanya dari printah tersebut terjadi, dan 
  3. fungsi yang ditangguhkan dijalankan bahkan jika terjadi panik run-time.

Panik & Pulih

Sebelumnya kita membuat fungsi yang disebut fungsi panik untuk menyebabkan kesalahan waktu proses. Kita dapat menangani panik run-time dengan fungsi pemulihan bawaan. memulihkan menghentikan kepanikan dan mengembalikan nilai yang dilewatkan ke panggilan untuk panik. Kita mungkin tergoda untuk menggunakannya seperti ini:

package main 
import "fmt" 
func main() { 
panic("PANIC") 
str := recover() 
fmt.Println(str) }


Tetapi panggilan untuk memulihkan tidak akan pernah terjadi dalam kasus ini karena panggilan untuk panik segera menghentikan eksekusi fungsi. Sebaliknya kita harus memasangkannya dengan penundaan seperti coding berikut:

package main
import "fmt"
func main() { 
defer func() { 
str := recover() 
fmt.Println(str) }()
panic("PANIC") }

Tunda, Panik & Pulihkan Golang
hasil coding


Kepanikan umumnya menunjukkan kesalahan programmer (misalnya mencoba mengakses indeks array yang di luar batas, lupa untuk menginisialisasi peta, dll) atau kondisi luar biasa yang tidak ada cara mudah untuk memulihkannya. (Oleh karena itu diberi nama "PANIC")



MATERI GOLANG

Jika kamu baru di pembelajaran golang, silakan untuk belajar dari materi pertama 


Reviewer: FajarYusuf.Com
ItemReviewed: Tunda, Panik & Pulihkan Golang

Wednesday, December 5, 2018

Rekursi GOLANG

REKURSI GOLANG

Rekursi

Rekursi adalah suatu fungsi yang dapat memanggil dirinya sendiri. Berikut ini adalah salah satu cara untuk menghitung faktorial angka, silakan masukkan coding berikut :
KALIAN BISA MENCOBANYA KLIK DISINI

package main
import (
"fmt"
)
func factorial(x uint) uint {
    if x == 0 {
        return 1
    }
    return x * factorial(x-1)
}
func main(){
    fmt.Println(factorial(2))
}

rekursi golang
hasil coding


fungsi diatas akan dapat menghitung nilai faktorial. Kita bisa menggunakan unit (unsigned integer) karena inputan harus berupa bilangan positif. Integer dapat menampung bilangan negatif dan positif oleh karena itu uint dapat dipilih sebagai tipe data untuk parameter.

Untuk lebih memahami bagaimana fungsi ini berfungsi, bahsa manusianya akan seperti ini :

  • Apakah x == 0? Tidak. (X adalah 2) 
  • Temukan faktorial x - 1 
  • Apakah x == 0? Tidak. (X adalah 1) 
  • Temukan faktorial x - 1 
  • Apakah x == 0? Ya, return 1. 
  • return 1 * 1 
  • return 2 * 1


Penutupan dan rekursi adalah teknik pemrograman yang kuat yang membentuk dasar paradigma yang dikenal sebagai pemrograman fungsional. Kebanyakan orang akan menemukan pemrograman fungsional lebih sulit dimengerti daripada pendekatan berdasarkan pada loop, if, variabel dan fungsi sederhana.



MATERI GOLANG

Jika kamu baru di pembelajaran golang, silakan untuk belajar dari materi pertama 


Reviewer: FajarYusuf.Com
ItemReviewed: Rekursi GOLANG

Tuesday, December 4, 2018

CLOSURE GOLANG

CLOSURE GOLANG

CLOSURE GOLANG

Dimungkinkan untuk membuat fungsi di dalam fungsi:
KALIAN BISA MENCOBANYA KLIK DISINI
func main() { 
add := func(x, y int) int { 
return x + y } 
fmt.Println(add(1,1)) }

CLOSURE GOLANG
hasil coding

add adalah variabel lokal yang memiliki tipe func (int, int) int (fungsi yang mengambil dua int dan mengembalikan int).

Ketika kamu membuat fungsi lokal seperti ini kamu juga memiliki akses ke variabel lokal lainnya (ingat ruang lingkup dari materi sebelumnya):

func main() { 
x := 0 
increment := func() int {
 x++ 
return x } 
fmt.Println(increment()) 
fmt.Println(increment()) }

closure golang
hasil coding


increment menambahkan 1 ke variabel x yang didefinisikan dalam ruang lingkup fungsi utama.

Variabel x ini dapat diakses dan dimodifikasi oleh fungsi increment. Inilah mengapa pertama kalinya kita memanggil increment, kita melihat 1 ditampilkan, untuk kedua kalinya kita menyebutnya, kita melihat 2 ditampilkan.

Fungsi seperti ini secara bersamaan dengan variabel non-lokal referensi dikenal sebagai closure.

Dalam hal ini increment dan variabel x membentuk closure.

Salah satu cara menggunakan closure adalah dengan menulis fungsi yang mengembalikan fungsi lain yang saat dipanggil dapat menghasilkan urutan angka. Misalnya coding dibawah ini adalah cara bagaimana kita dapat menghasilkan semua nomor genap:

func makeEvenGenerator() func() uint { 
i := uint(0) 
return func() (ret uint) { 
ret=i 
i+=2 
return } } 
func main() { 
nextEven := makeEvenGenerator() 
fmt.Println(nextEven()) // 0 
fmt.Println(nextEven()) // 2 
fmt.Println(nextEven()) // 4
 }

closure golang
hasil coding


makeEvenGenerator mengembalikan fungsi yang menghasilkan angka genap, setiap kali dipanggil menambah 2 ke variabel i lokal yang tidak seperti variabel lokal normal hanya bertahan antara panggilan, untuk lebih jelas silakan saja ganti angka 4 menjadi 5.




MATERI GOLANG

Jika kamu baru di pembelajaran golang, silakan untuk belajar dari materi pertama 


Reviewer: FajarYusuf.Com
ItemReviewed: CLOSURE GOLANG

GOLANG Mengembalikan Banyak Nilai dan Fungsi Variadik

GOLANG Mengembalikan Banyak Nilai dan Fungsi Variadik

Mengembalikan Banyak Nilai

Go juga mampu mengembalikan beberapa nilai dari suatu fungsi, seperti koding berikut ini :
KALIAN BISA MENCOBANYA KLIK DISINI
func f() (int, int) {
return 5, 6}
 func main() {
x,y:= f()}

GOLANG
hasil coding


Tiga perubahan diperlukan: ubah jenis kembalian berisi beberapa jenis yang dipisahkan oleh tanda koma "," , ubah ekspresi setelah pengembalian sehingga berisi beberapa ekspresi yang dipisahkan , dan akhirnya ubah pernyataan penugasan sehingga beberapa nilai berada di sisi kiri := atau =.
Beberapa nilai sering digunakan untuk mengembalikan nilai kesalahan bersamaan dengan hasilnya (x, err:= f ()), atau boolean untuk menunjukkan keberhasilan (x, y:= f ()).

Fungsi Variadik

Ada formulir khusus yang tersedia untuk parameter terakhir dalam fungsi Go:
KALIAN BISA MENCOBANYA KLIK DISINI
func add(args ...int) int { 
 total := 0 
 for _, v := range args { 
 total += v } 
 return total } 
 func main() {
fmt.Println(add(1,2,3)) }

GOLANG
hasil coding

Dengan menggunakan ... sebelum nama jenis parameter terakhir kamu dapat menunjukkan bahwa dibutuhkan nol atau lebih dari parameter tersebut. Dalam hal ini kita mengambil nol atau lebih banyak int.

Kita menjalankan fungsi add seperti fungsi lain kecuali kita dapat melewati int sebanyak yang kita inginkan.

Inilah cara coding tepatnya bagaimana fungsi fmt.Println diimplementasikan:

func Println(a ...interface{}) (n int, err 
error)

Fungsi Println mengambil sejumlah nilai dari jenis apa pun. (Jenis antarmuka {} khusus akan dibahas lebih detail di materi selanjutnya.

Kita juga dapat mengirimkan sepotong int dengan mengikuti irisan dengan ...  seperti berikut :

func main() {
 xs := []int{1,2,3} 
fmt.Println(add(xs...)) }

golang
hasil coding




MATERI GOLANG

Jika kamu baru di pembelajaran golang, silakan untuk belajar dari materi pertama 


Reviewer: FajarYusuf.Com
ItemReviewed: GOLANG Mengembalikan Banyak Nilai dan Fungsi Variadik

Monday, December 3, 2018

FUNCTIONS GOLANG

FUNCTIONS GOLANG

FUNCTIONS GOLANG

Functions atau fungsi adalah bagian independen dari kode yang memetakan nol atau lebih parameter input ke nol atau lebih banyak parameter output. 

Fungsi (juga dikenal sebagai prosedur atau subrutin) sering digambarkan sebagai kotak hitam: (kotak hitam mewakili fungsi)

Sampai materi ini program yang kita tulis di Go hanya menggunakan satu fungsi:

func main () {}

Kita sekarang akan mulai menulis program yang menggunakan lebih dari satu fungsi.

Fungsi Kedua 

Ingat program ini dari materi sebelumnya :
KALIAN BISA MENCOBANYA KLIK DISINI

func main() {
xs := []float64{98,93,77,82,83} 

total := 0.0 
for _, v := range xs {
 total += v }
 fmt.Println(total / float64(len(xs))) 
}

functions golang
hasil coding

Program ini menghitung rata-rata dari serangkaian angka. Menemukan rata-rata seperti ini adalah masalah yang sangat umum, jadi akan ideal untuk definisi sebagai fungsi.

Fungsi rata-rata perlu mengambil sepotong float64 dan mengembalikan satu float64.

Masukkan coding berikut ini sebelum fungsi utama:

func rata-rata(xs []float64) float64 { 
 panic("Not Implemented") }

Fungsi dimulai dengan fungsi kata kunci, diikuti oleh nama fungsi. Parameter (input) dari fungsi didefinisikan seperti ini : namatype, namatype , ….

Fungsi kita memiliki satu parameter (daftar skor) yang kita beri nama xs. Setelah parameter, kita masukkan jenis kembalinya. Secara kolektif parameter dan jenis kembalinya dikenal sebagai tanda tangan fungsi.

Akhirnya kita memiliki tubuh fungsi yang merupakan serangkaian pernyataan antara kurung kurawal "{}".

Dalam tubuh ini kita memanggil fungsi bawaan yang disebut panik yang menyebabkan kesalahan waktu proses. (Kita akan melihat lebih banyak lagi tentang kepanikan nanti di materi selanjutnya).

Menulis fungsi bisa jadi sulit, jadi adalah ide yang baik untuk memecah proses menjadi bagian yang dapat dikelola, daripada mencoba untuk mengimplementasikan semuanya dalam satu langkah besar.

Sekarang mari kita ambil kode dari fungsi utama kita dan pindahkan ke fungsi rata-rata kita:

func avarage(xs []float64) float64 {
 total := 0.0
 for _, v := range xs { 
 total += v }
 return total / float64(len(xs)) }

Perhatikan bahwa kita mengubah fmt.Println menjadi return. Pernyataan return menyebabkan fungsi untuk segera berhenti dan mengembalikan nilai setelah itu ke fungsi yang disebut seperti ini.

Ubah func main agar terlihat seperti ini:

func main () {
xs: = [] float64 {98,93,77,82,83}
fmt.Println (avarage (xs))}

functions golang
hasil coding

Menjalankan program ini seharusnya memberikan kamu hasil yang sama persis dengan yang asli.

Beberapa hal yang perlu diingat:

#Nama-nama parameter tidak harus cocok dalam fungsi panggilan. Misalnya contoh coding ini:
func main () {someOtherName: = [] float64 {98,93,77,82,83} fmt.Println (avarage (someOtherName))}
Dan program kita akan tetap berfungsi.

#Fungsi tidak memiliki akses ke apa pun dalam fungsi panggilan. Contoh coding ini tidak akan berfungsi:
func f () {fmt.Println (x)} func main () {x: = 5 f ()}

Kita seharusnya melakukan ini:
func f (x int) {fmt.Println (x)} func main () {x: = 5 f (x)}

Atau ini:
var x int = 5 func f () {fmt.Println (x)} func main () {f ()}


#Fungsi dibangun dalam "tumpukan". Misalkan kita menulis coding seperti ini:
func main () {fmt.Println (f1 ())} func f1 () int {return f2 ()} func f2 () int {return 1}

Setiap kali kita memanggil fungsi, kita mendorongnya ke tumpukan panggilan dan setiap kali kita kembali dari fungsi, kita memunculkan fungsi terakhir dari tumpukan.

#Kita juga dapat memberi nama jenis pengembalian:
func f2 () (r int) {r = 1 return}




MATERI GOLANG

Jika kamu baru di pembelajaran golang, silakan untuk belajar dari materi pertama 


Reviewer: FajarYusuf.Com
ItemReviewed: FUNCTIONS GOLANG

TENTANG SITUS

SITUS INI ADALAH SITUS PEMBELAJARAN PEMROGRAMAN DAN JUGA PEMAHAMAN TERHADAP TEKNOLOGI KOMPUTER. KALIAN BISA MENGIKUTI PEMBELAJARAN PEMROGRAMAN DENGAN BERTAHAP PADA MATERI YANG SUDAH SAYA SEDIAKAN, JIKA ADA MATERI YANG MEMBINGUNGKAN SILAKAN LAKUKAN KOMENTAR PADA MATERI YANG ANDA TANYAKAN ATAU KALIAN BISA MENGHUBUNGI SAYA DIHALAMAN KONTAK.